Merged in jmchilton/galaxy-central-preseeding/workflow_import_menu_api (pull request #40)

This commit is contained in:
Dannon Baker
2012-03-21 09:48:47 -04:00
2 changed files with 16 additions and 3 deletions
+13 -2
View File
@@ -16,6 +16,7 @@ from galaxy.util.sanitize_html import sanitize_html
from galaxy.util.topsort import topsort, topsort_levels, CycleError
from galaxy.workflow.modules import *
from galaxy import model
from galaxy import util
from galaxy.model.mapping import desc
from galaxy.model.orm import *
from galaxy.model.item_attrs import *
@@ -1127,6 +1128,7 @@ class WorkflowController( BaseUIController, Sharable, UsesStoredWorkflow, UsesAn
# id being imported from a Galaxy tool shed repository.
tool_shed_url = kwd.get( 'tool_shed_url', '' )
repository_metadata_id = kwd.get( 'repository_metadata_id', '' )
add_to_menu = util.string_as_bool( kwd.get( 'add_to_menu', False ) )
# The workflow_name parameter is in the request only if the import originated
# from a Galaxy tool shed, in which case the value was encoded.
workflow_name = kwd.get( 'workflow_name', '' )
@@ -1193,7 +1195,7 @@ class WorkflowController( BaseUIController, Sharable, UsesStoredWorkflow, UsesAn
src = None
if cntrller != 'api':
src="uploaded file"
workflow, missing_tool_tups = self._workflow_from_dict( trans, data, source=src )
workflow, missing_tool_tups = self._workflow_from_dict( trans, data, source=src, add_to_menu=add_to_menu )
workflow = workflow.latest_workflow
if workflow_name:
workflow.name = workflow_name
@@ -1828,7 +1830,7 @@ class WorkflowController( BaseUIController, Sharable, UsesStoredWorkflow, UsesAn
# Add to return value
data['steps'][step.order_index] = step_dict
return data
def _workflow_from_dict( self, trans, data, source=None ):
def _workflow_from_dict( self, trans, data, source=None, add_to_menu=False ):
"""
Creates a workflow from a dict. Created workflow is stored in the database and returned.
"""
@@ -1905,6 +1907,15 @@ class WorkflowController( BaseUIController, Sharable, UsesStoredWorkflow, UsesAn
# Persist
trans.sa_session.add( stored )
trans.sa_session.flush()
if add_to_menu:
if trans.user.stored_workflow_menu_entries == None:
trans.user.stored_workflow_menu_entries = []
menuEntry = model.StoredWorkflowMenuEntry()
menuEntry.stored_workflow = stored
trans.user.stored_workflow_menu_entries.append( menuEntry )
trans.sa_session.flush()
return stored, missing_tool_tups
## ---- Utility methods -------------------------------------------------------
+3 -1
View File
@@ -2,7 +2,7 @@
"""
Import workflows from the command line.
Example calls:
python workflow_import.py <api_key> <galaxy_url> '/path/to/workflow/file'
python workflow_import.py <api_key> <galaxy_url> '/path/to/workflow/file [--add_to_menu]'
"""
import os, sys
@@ -16,6 +16,8 @@ def main():
try:
data = {}
data['installed_repository_file'] = sys.argv[3]
if len(sys.argv) > 4 and sys.argv[4] == "--add_to_menu":
data['add_to_menu'] = True
except IndexError:
print 'usage: %s key galaxy_url workflow_file' % os.path.basename(sys.argv[0])
sys.exit(1)