From 32be886f0f51103a648003997c7d06cd12ba08d9 Mon Sep 17 00:00:00 2001 From: carlfeberhard Date: Fri, 11 Dec 2015 10:30:39 -0500 Subject: [PATCH] API, Histories: allow api/histories/create to be used as anon user; UI, Histories: minor fixes --- client/galaxy/scripts/mvc/history/copy-dialog.js | 2 +- lib/galaxy/model/__init__.py | 16 ++++++---------- lib/galaxy/webapps/galaxy/api/histories.py | 7 ++++++- lib/galaxy/webapps/galaxy/controllers/history.py | 1 - static/maps/mvc/history/copy-dialog.js.map | 2 +- static/scripts/bundled/analysis.bundled.js | 2 +- static/scripts/bundled/analysis.bundled.js.map | 2 +- static/scripts/bundled/libs.bundled.js.map | 2 +- static/scripts/mvc/history/copy-dialog.js | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/client/galaxy/scripts/mvc/history/copy-dialog.js b/client/galaxy/scripts/mvc/history/copy-dialog.js index 4a6ef869a40..bf6d04d3b0a 100644 --- a/client/galaxy/scripts/mvc/history/copy-dialog.js +++ b/client/galaxy/scripts/mvc/history/copy-dialog.js @@ -102,7 +102,7 @@ var CopyDialog = { }) //TODO: make this unneccessary with pub-sub error or handling via Galaxy .fail( function(){ - alert([ this.errorMessage, _l( 'Please contact a Galaxy administrator' ) ].join( '. ' )); + alert([ dialog.errorMessage, _l( 'Please contact a Galaxy administrator' ) ].join( '. ' )); deferred.rejectWith( deferred, arguments ); }) .always( function(){ diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 0d619b6a77f..025cf336c4c 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -1200,15 +1200,10 @@ class History( object, Dictifiable, UsesAnnotations, HasName ): If `activatable`, copy only non-deleted datasets. If `all_datasets`, copy non-deleted, deleted, and purged datasets. """ + name = name or self.name + applies_to_quota = target_user != self.user + # Create new history. - if not name: - name = self.name - # wut. If it's an anon user, the target user becomes the original owner?? - if not target_user: - target_user = self.user - quota = True - if target_user == self.user: - quota = False new_history = History( name=name, user=target_user ) db_session = object_session( self ) db_session.add( new_history ) @@ -1229,7 +1224,7 @@ class History( object, Dictifiable, UsesAnnotations, HasName ): for hda in hdas: # Copy HDA. new_hda = hda.copy( copy_children=True ) - new_history.add_dataset( new_hda, set_hid=False, quota=quota ) + new_history.add_dataset( new_hda, set_hid=False, quota=applies_to_quota ) db_session.add( new_hda ) db_session.flush() @@ -1243,7 +1238,7 @@ class History( object, Dictifiable, UsesAnnotations, HasName ): else: hdcas = self.active_dataset_collections for hdca in hdcas: - new_hdca = hdca.copy( ) + new_hdca = hdca.copy() new_history.add_dataset_collection( new_hdca, set_hid=False ) db_session.add( new_hdca ) db_session.flush() @@ -1254,6 +1249,7 @@ class History( object, Dictifiable, UsesAnnotations, HasName ): new_history.hid_counter = self.hid_counter db_session.add( new_history ) db_session.flush() + return new_history @property diff --git a/lib/galaxy/webapps/galaxy/api/histories.py b/lib/galaxy/webapps/galaxy/api/histories.py index cb6c21123fa..08648e0c857 100644 --- a/lib/galaxy/webapps/galaxy/api/histories.py +++ b/lib/galaxy/webapps/galaxy/api/histories.py @@ -246,6 +246,7 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor rval.append( history_dict ) return rval + # TODO: does this need to be anonymous_and_sessionless? Not just expose_api? @expose_api_anonymous_and_sessionless def shared_with_me( self, trans, **kwd ): """ @@ -272,7 +273,7 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor rval.append( history_dict ) return rval - @expose_api + @expose_api_anonymous def create( self, trans, payload, **kwd ): """ create( trans, payload ) @@ -321,6 +322,10 @@ class HistoriesController( BaseAPIController, ExportsHistoryMixin, ImportsHistor trans.sa_session.add( new_history ) trans.sa_session.flush() + # an anonymous user can only have one history + if self.user_manager.is_anonymous( trans.user ): + self.history_manager.set_current( trans, new_history ) + return self.history_serializer.serialize_to_view( new_history, user=trans.user, trans=trans, **self._parse_serialization_params( kwd, 'detailed' ) ) diff --git a/lib/galaxy/webapps/galaxy/controllers/history.py b/lib/galaxy/webapps/galaxy/controllers/history.py index 2c356519c11..62974a60b70 100644 --- a/lib/galaxy/webapps/galaxy/controllers/history.py +++ b/lib/galaxy/webapps/galaxy/controllers/history.py @@ -9,7 +9,6 @@ import galaxy.util from galaxy import exceptions from galaxy import managers from galaxy import model -from galaxy import util from galaxy import web from galaxy.model.item_attrs import UsesAnnotations from galaxy.model.item_attrs import UsesItemRatings diff --git a/static/maps/mvc/history/copy-dialog.js.map b/static/maps/mvc/history/copy-dialog.js.map index 9c9d8ad6996..a6fedb9daf8 100644 --- a/static/maps/mvc/history/copy-dialog.js.map +++ b/static/maps/mvc/history/copy-dialog.js.map @@ -1 +1 @@ -{"version":3,"file":"copy-dialog.js","sources":["../../../src/mvc/history/copy-dialog.js"],"names":["define","MODAL","_l","CopyDialog","defaultName","_","template","title","submitLabel","errorMessage","progressive","activeLabel","allLabel","anonWarning","_template","join","_showAjaxIndicator","indicator","this","modal","$","empty","append","css","margin-top","dialog","history","options","checkNameAndCopy","name","val","show","copyAllDatasets","prop","copy","done","response","deferred","resolve","fail","alert","rejectWith","arguments","always","autoClose","hide","jQuery","Deferred","defaultCopyNameFn","nameFn","defaultCopyName","get","defaultCopyWhat","allDatasets","allowAll","isUndefined","originalClosingCallback","closing_callback","extend","body","isAnon","Galaxy","user","isAnonymous","copyWhat","buttons","object","height","closing_events","cancelled","reject","focus","select","on","ev","keyCode","preventDefault","ImportDialog","historyCopyDialog","window","parent","View","useImport"],"mappings":"AAAAA,QACI,kBACA,sBACD,SAAUC,EAAOC,GAEpB,YAOA,IAAIC,IAGAC,YAAkBC,EAAEC,SAAU,yBAC9BC,MAAkBF,EAAEC,SAAUJ,EAAI,mBAAsB,kBACxDM,YAAkBN,EAAI,QACtBO,aAAkBP,EAAI,+BACtBQ,YAAkBR,EAAI,mBACtBS,YAAkBT,EAAI,8CACtBU,SAAkBV,EAAI,4CACtBW,YAAkBX,EAAI,2FACJA,EAAI,gCAGtBY,UAAYT,EAAEC,UAGV,sBACI,+BACI,qBACAJ,EAAI,WACJ,0BAA2BA,EAAI,cAAgB,QAASA,EAAI,MAAQ,IACpE,2BAA4BA,EAAI,iBAAmB,QACvD,SACJ,UACA,SACI,iCACIA,EAAI,qCAAuC,IAC/C,iBAGA,+FACA,iGACIA,EAAI,sCACR,OAEA,wBACI,SACA,MAAOA,EAAI,+DAAiE,OAE5E,uFACI,uEACJ,4DACA,SACA,uEACI,+DACJ,iDACJ,UACJ,WACFa,KAAM,KAGRC,mBAAqB,WACjB,GAAIC,GAAY,kDAAoDC,KAAKR,YAAc,SACvFQ,MAAKC,MAAMC,EAAG,eAAgBC,QAAQC,OAAQL,GAAYM,KAAMC,aAAc,SAKlFC,OAAS,SAAkBN,EAAOO,EAASC,GAiBvC,QAASC,KACL,GAAIC,GAAOV,EAAMC,EAAG,qBAAsBU,KAC1C,KAAKD,EAED,WADAV,GAAMC,EAAG,kBAAmBW,MAIhC,IAAIC,GAAyE,aAAvDb,EAAMC,EAAG,mCAAoCU,KACnEX,GAAMC,EAAG,UAAWa,KAAM,YAAY,GACtCR,EAAOT,qBACPU,EAAQQ,MAAM,EAAML,EAAMG,GACrBG,KAAM,SAAUC,GACbC,EAASC,QAASF,KAGrBG,KAAM,WACHC,OAAQtB,KAAKT,aAAcP,EAAI,0CAA4Ca,KAAM,OACjFsB,EAASI,WAAYJ,EAAUK,aAElCC,OAAQ,WACDC,GAAazB,EAAM0B,SApCnClB,EAAUA,KAEV,IAAIF,GAASP,KACTmB,EAAWS,OAAOC,WAElBC,EAAoBrB,EAAQsB,QAAU/B,KAAKd,YAC3C8C,EAAkBF,GAAoBnB,KAAMH,EAAQyB,IAAK,UAEzDC,EAAkBzB,EAAQ0B,YAAa,WAAa,mBACpDC,EAAYjD,EAAEkD,YAAa5B,EAAQ2B,WAA+B,EAAnB3B,EAAQ2B,SACvDV,EAAavC,EAAEkD,YAAa5B,EAAQiB,YAAiC,EAApBjB,EAAQiB,SAE7D1B,MAAKC,MAAQA,CA4Bb,IAAIqC,GAA0B7B,EAAQ8B,gBAqCtC,OApCAtC,GAAMY,KAAM1B,EAAEqD,OAAQ/B,GAClBpB,MAAUW,KAAKX,OAAQsB,KAAMH,EAAQyB,IAAK,UAC1CQ,KAAUvC,EAAGK,EAAOX,WACZe,KAAcqB,EACdU,OAAcC,OAAOC,KAAKC,cAC1BT,SAAcA,EACdU,SAAcZ,EACdzC,YAAcO,KAAKP,YACnBC,SAAcM,KAAKN,SACnBC,YAAcK,KAAKL,eAE3BoD,QAAU5D,EAAE6D,SACFhE,EAAI,UAAc,WAAYiB,EAAM0B,UACpC3B,KAAKV,YAAaoB,KAE5BuC,OAAkB,OAClBC,gBAAkB,EAClBX,iBAAkB,SAA4BY,GAClCA,GACAhC,EAASiC,QAASD,WAAY,IAE9Bb,GACAA,EAAyBa,OAMzClD,EAAMC,EAAG,qBAAsBmD,QAAQC,SACvCrD,EAAMC,EAAG,qBAAsBqD,GAAI,UAAW,SAAUC,GACjC,KAAfA,EAAGC,UACHD,EAAGE,iBACHhD,OAIDS,IASXwC,EAAexE,EAAEqD,UAAYvD,GAC7BC,YAAkBC,EAAEC,SAAU,yBAC9BC,MAAkBF,EAAEC,SAAUJ,EAAI,qBAAwB,kBAC1DM,YAAkBN,EAAI,UACtBO,aAAkBP,EAAI,iCACtBQ,YAAkBR,EAAI,qBACtBS,YAAkBT,EAAI,gDACtBU,SAAkBV,EAAI,8CACtBW,YAAkBX,EAAI,2FACJA,EAAI,oCAoBtB4E,EAAoB,SAAUpD,EAASC,GACvCA,EAAUA,KAEV,IAAIR,GAAQ4D,OAAOC,OAAOnB,OAAO1C,OAAS,GAAIlB,GAAMgF,QACpD,OAAOtD,GAAQuD,UACXL,EAAapD,OAAQN,EAAOO,EAASC,GACrCxB,EAAWsB,OAAQN,EAAOO,EAASC,GAKvC,OAAOmD"} \ No newline at end of file +{"version":3,"file":"copy-dialog.js","sources":["../../../src/mvc/history/copy-dialog.js"],"names":["define","MODAL","_l","CopyDialog","defaultName","_","template","title","submitLabel","errorMessage","progressive","activeLabel","allLabel","anonWarning","_template","join","_showAjaxIndicator","indicator","this","modal","$","empty","append","css","margin-top","dialog","history","options","checkNameAndCopy","name","val","show","copyAllDatasets","prop","copy","done","response","deferred","resolve","fail","alert","rejectWith","arguments","always","autoClose","hide","jQuery","Deferred","defaultCopyNameFn","nameFn","defaultCopyName","get","defaultCopyWhat","allDatasets","allowAll","isUndefined","originalClosingCallback","closing_callback","extend","body","isAnon","Galaxy","user","isAnonymous","copyWhat","buttons","object","height","closing_events","cancelled","reject","focus","select","on","ev","keyCode","preventDefault","ImportDialog","historyCopyDialog","window","parent","View","useImport"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/bundled/analysis.bundled.js b/static/scripts/bundled/analysis.bundled.js index 89c0717df84..972dc79068d 100644 --- a/static/scripts/bundled/analysis.bundled.js +++ b/static/scripts/bundled/analysis.bundled.js @@ -6,7 +6,7 @@ this.model.on("change",function(t,e){this.model.changedAttributes().state&&this. t.type=t.display||"checkbox",t.multiple="checkbox"==t.display,e.BaseIcons.prototype.initialize.call(this,t),this.initial=!0},value:function(t){var i=e.BaseIcons.prototype.value.call(this,t);if(this.initial&&null!==i&&this.header_index){this.initial=!1;var n=i;a.isArray(n)||(n=[n]);for(var s in n){var o=this.header_index[n[s]];for(var r in o)this._setState(o[r],!0)}}return i},_setState:function(t,e){var i=this.$(".button-"+t),n=this.$(".subgroup-"+t);i.data("is_expanded",e),e?(n.fadeIn("fast"),i.removeClass("toggle-expand"),i.addClass("toggle")):(n.hide(),i.removeClass("toggle"),i.addClass("toggle-expand"))},_templateOptions:function(e){function n(t,e){var i=t.find(".button-"+e);i.on("click",function(){o._setState(e,!i.data("is_expanded"))})}function s(e,r,l){l=l||[];for(i in r){var c=r[i],d=c.options.length>0,h=l.slice(0);o.header_index[c.value]=h.slice(0);var u=a("
");if(d){var p=t.uid(),f=a(''),g=a('