From cd0a21a227f3f161d48027c86212b65eb1456b07 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 8 Mar 2012 10:17:40 -0500 Subject: [PATCH 1/3] branch close From 1c37cb28ca512a28b50570b4cada5d1fdf740d05 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Mon, 19 Mar 2012 12:13:59 -0500 Subject: [PATCH 2/3] Augment workflow import api to allow add_to_menu argument which (when true) adds imported workflow to user's workflow menu. Augment api example script to take in an optional fourth parameter --add_to_menu to enable this. --- lib/galaxy/web/controllers/workflow.py | 14 ++++++++++++-- scripts/api/workflow_import.py | 4 +++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/web/controllers/workflow.py b/lib/galaxy/web/controllers/workflow.py index fff12747527..fe1a7b2c5e3 100644 --- a/lib/galaxy/web/controllers/workflow.py +++ b/lib/galaxy/web/controllers/workflow.py @@ -1127,6 +1127,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 = 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 +1194,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 @@ -1824,7 +1825,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. """ @@ -1901,6 +1902,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 ------------------------------------------------------- diff --git a/scripts/api/workflow_import.py b/scripts/api/workflow_import.py index 123e2d1a180..e81a216fe21 100755 --- a/scripts/api/workflow_import.py +++ b/scripts/api/workflow_import.py @@ -2,7 +2,7 @@ """ Import workflows from the command line. Example calls: -python workflow_import.py '/path/to/workflow/file' +python workflow_import.py '/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) From 3e3f99bcf75b7c6156a96ee0e7c20d16af810afe Mon Sep 17 00:00:00 2001 From: John Chilton Date: Mon, 19 Mar 2012 12:37:37 -0500 Subject: [PATCH 3/3] Improving string vs. bool handling of add_to_menu API option in workflow controller. --- lib/galaxy/web/controllers/workflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/web/controllers/workflow.py b/lib/galaxy/web/controllers/workflow.py index fe1a7b2c5e3..c207097ed84 100644 --- a/lib/galaxy/web/controllers/workflow.py +++ b/lib/galaxy/web/controllers/workflow.py @@ -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,7 +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 = kwd.get( 'add_to_menu', False ) + 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', '' )