From 9d56eaf07a4bb6bd53ee22cbe8e22a5b53c29e01 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 20 May 2016 12:15:15 -0400 Subject: [PATCH] Add a new workflow building mode variation which does access the history --- lib/galaxy/tools/__init__.py | 4 ++-- lib/galaxy/tools/parameters/basic.py | 21 +++++++++++-------- lib/galaxy/webapps/galaxy/api/workflows.py | 2 +- .../galaxy/workflow/editor_tool_form.mako | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index f2b999b8d48..d03e2ddf2c9 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -1573,7 +1573,7 @@ class Tool( object, Dictifiable ): return tool_dict - def to_json( self, trans, kwd={}, job=None, workflow_mode=False ): + def to_json( self, trans, kwd={}, job=None, workflow_building_mode=False ): """ Recursively creates a tool dictionary containing repeats, dynamic options and updated states. """ @@ -1590,7 +1590,7 @@ class Tool( object, Dictifiable ): raise exceptions.MessageException( '[history_id=%s] Failed to retrieve history. %s.' % ( history_id, str( e ) ) ) # build request context - request_context = WorkRequestContext( app=trans.app, user=trans.user, history=history, workflow_building_mode=workflow_mode ) + request_context = WorkRequestContext( app=trans.app, user=trans.user, history=history, workflow_building_mode=workflow_building_mode ) # load job parameters into incoming tool_message = '' diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index a13f5894178..6e7c9f7807a 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -25,9 +25,12 @@ from .dataset_matcher import DatasetCollectionMatcher from galaxy.web import url_for from galaxy.util.dictifiable import Dictifiable import galaxy.model +from galaxy.util.bunch import Bunch log = logging.getLogger(__name__) +workflow_building_modes = Bunch( DISABLED=False, ENABLED=True, USE_HISTORY=1 ) + WORKFLOW_PARAMETER_REGULAR_EXPRESSION = re.compile( '''\$\{.+?\}''' ) @@ -264,7 +267,7 @@ class TextToolParameter( ToolParameter ): def validate( self, value, trans=None ): search = self.type == "text" - if not ( trans and trans.workflow_building_mode and contains_workflow_parameter(value, search=search) ): + if not ( trans and trans.workflow_building_mode is workflow_building_modes.ENABLED and contains_workflow_parameter(value, search=search) ): return super( TextToolParameter, self ).validate( value, trans ) def get_initial_value( self, trans, other_values ): @@ -331,11 +334,11 @@ class IntegerToolParameter( TextToolParameter ): try: return int( value ) except: - if contains_workflow_parameter( value ) and trans.workflow_building_mode: + if contains_workflow_parameter( value ) and trans.workflow_building_mode is workflow_building_modes.ENABLED: return value if not value and self.optional: return "" - if trans.workflow_building_mode: + if trans.workflow_building_mode is workflow_building_modes.ENABLED: raise ValueError( "An integer or workflow parameter e.g. ${name} is required" ) else: raise ValueError( "An integer is required" ) @@ -411,11 +414,11 @@ class FloatToolParameter( TextToolParameter ): try: return float( value ) except: - if contains_workflow_parameter( value ) and trans.workflow_building_mode: + if contains_workflow_parameter( value ) and trans.workflow_building_mode is workflow_building_modes.ENABLED: return value if not value and self.optional: return "" - if trans and trans.workflow_building_mode: + if trans and trans.workflow_building_mode is workflow_building_modes.ENABLED: raise ValueError( "A real number or workflow parameter e.g. ${name} is required" ) else: raise ValueError( "A real number is required" ) @@ -1871,7 +1874,7 @@ class DataToolParameter( BaseDataToolParameter ): return '' def from_json( self, value, trans, other_values={} ): - if trans.workflow_building_mode: + if trans.workflow_building_mode is workflow_building_modes.ENABLED: return None if not value and not self.optional: raise ValueError( "History does not include a dataset of the required format / build" ) @@ -2051,7 +2054,7 @@ class DataToolParameter( BaseDataToolParameter ): # return dictionary without options if context is unavailable history = trans.history - if history is None or trans.workflow_building_mode: + if history is None or trans.workflow_building_mode is workflow_building_modes.ENABLED: return d # prepare dataset/collection matching @@ -2152,7 +2155,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ): return field def from_json( self, value, trans, other_values={} ): - if trans.workflow_building_mode: + if trans.workflow_building_mode is workflow_building_modes.ENABLED: return None if not value and not self.optional: raise ValueError( "History does not include a dataset collection of the correct type or containing the correct types of datasets" ) @@ -2213,7 +2216,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ): # return dictionary without options if context is unavailable history = trans.history - if history is None or trans.workflow_building_mode or other_values is None: + if history is None or trans.workflow_building_mode is workflow_building_modes.ENABLED or other_values is None: return d # prepare dataset/collection matching diff --git a/lib/galaxy/webapps/galaxy/api/workflows.py b/lib/galaxy/webapps/galaxy/api/workflows.py index f88b8ca91b1..1fbcbf4c99f 100644 --- a/lib/galaxy/webapps/galaxy/api/workflows.py +++ b/lib/galaxy/webapps/galaxy/api/workflows.py @@ -334,7 +334,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn } ) # create tool model and default tool state (if missing) - tool_model = module.tool.to_json( trans, tool_inputs, workflow_mode=True ) + tool_model = module.tool.to_json( trans, tool_inputs, workflow_building_mode=True ) module.update_state( tool_model[ 'state_inputs' ] ) return { 'tool_model' : tool_model, diff --git a/templates/webapps/galaxy/workflow/editor_tool_form.mako b/templates/webapps/galaxy/workflow/editor_tool_form.mako index 2922f68605f..eaaf9555086 100644 --- a/templates/webapps/galaxy/workflow/editor_tool_form.mako +++ b/templates/webapps/galaxy/workflow/editor_tool_form.mako @@ -4,7 +4,7 @@ from galaxy.tools.parameters import params_to_incoming incoming = {} params_to_incoming( incoming, tool.inputs, module.state.inputs, trans.app ) - self.form_config = tool.to_json(trans, incoming, workflow_mode=True) + self.form_config = tool.to_json(trans, incoming, workflow_building_mode=True) self.form_config.update({ 'id' : tool.id, 'job_id' : trans.security.encode_id( job.id ) if job else None,