mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merged in jmchilton/galaxy-central-preseeding/workflow_import_menu_api (pull request #40)
This commit is contained in:
@@ -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 -------------------------------------------------------
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user