From 8bd4cabdde922f23c06c64f95f50ea4d81caa940 Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 26 Jan 2016 03:15:38 -0500 Subject: [PATCH] Use request context for parameter helper --- lib/galaxy/tools/__init__.py | 17 +++++++++-------- lib/galaxy/tools/evaluation.py | 2 +- lib/galaxy/workflow/modules.py | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index 4392b784193c..4b456dd5b5e9 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -1629,14 +1629,15 @@ def params_to_strings( self, params, app ): def params_from_strings( self, params, app, ignore_errors=False ): return params_from_strings( self.inputs, params, app, ignore_errors ) - def check_and_update_param_values( self, values, trans, update_values=True ): + def check_and_update_param_values( self, values, trans, update_values=True, workflow_building_mode=False ): """ Check that all parameters have values, and fill in with default values where necessary. This could be called after loading values from a database in case new parameters have been added. """ messages = {} - self.check_and_update_param_values_helper( self.inputs, values, trans, messages, update_values=update_values ) + request_context = WorkRequestContext( app=trans.app, user=trans.user, history=trans.history, workflow_building_mode=workflow_building_mode ) + self.check_and_update_param_values_helper( self.inputs, values, request_context, messages, update_values=update_values ) return messages def check_and_update_param_values_helper( self, inputs, values, trans, messages, context=None, prefix="", update_values=True ): @@ -1654,7 +1655,7 @@ def check_and_update_param_values_helper( self, inputs, values, trans, messages, messages[ input.name ] = cond_messages test_value = input.test_param.get_initial_value( trans, context ) current_case = input.get_current_case( test_value, trans ) - self.check_and_update_param_values_helper( input.cases[ current_case ].inputs, {}, trans, cond_messages, context, prefix ) + self.check_and_update_param_values_helper( input.cases[ current_case ].inputs, {}, trans, cond_messages, context, prefix, update_values=update_values ) elif isinstance( input, Repeat ): if input.min: messages[ input.name ] = [] @@ -1662,10 +1663,10 @@ def check_and_update_param_values_helper( self, inputs, values, trans, messages, rep_prefix = prefix + "%s %d > " % ( input.title, i + 1 ) rep_dict = dict() messages[ input.name ].append( rep_dict ) - self.check_and_update_param_values_helper( input.inputs, {}, trans, rep_dict, context, rep_prefix ) + self.check_and_update_param_values_helper( input.inputs, {}, trans, rep_dict, context, rep_prefix, update_values=update_values ) elif isinstance( input, Section ): messages[ input.name ] = {} - self.check_and_update_param_values_helper( input.inputs, {}, trans, messages[ input.name ], context, prefix ) + self.check_and_update_param_values_helper( input.inputs, {}, trans, messages[ input.name ], context, prefix, update_values=update_values ) else: messages[ input.name ] = "No value found for '%s%s', using default" % ( prefix, input.label ) values[ input.name ] = input.get_initial_value( trans, context ) @@ -1674,7 +1675,7 @@ def check_and_update_param_values_helper( self, inputs, values, trans, messages, if isinstance( input, Repeat ): for i, d in enumerate( values[ input.name ] ): rep_prefix = prefix + "%s %d > " % ( input.title, i + 1 ) - self.check_and_update_param_values_helper( input.inputs, d, trans, messages, context, rep_prefix ) + self.check_and_update_param_values_helper( input.inputs, d, trans, messages, context, rep_prefix, update_values=update_values ) elif isinstance( input, Conditional ): group_values = values[ input.name ] use_initial_value = False @@ -1692,10 +1693,10 @@ def check_and_update_param_values_helper( self, inputs, values, trans, messages, messages[ child_input.name ] = "Value no longer valid for '%s%s', replacing with default" % ( prefix, child_input.label ) else: current = group_values["__current_case__"] - self.check_and_update_param_values_helper( input.cases[current].inputs, group_values, trans, messages, context, prefix ) + self.check_and_update_param_values_helper( input.cases[current].inputs, group_values, trans, messages, context, prefix, update_values=update_values ) elif isinstance( input, Section ): messages[ input.name ] = {} - self.check_and_update_param_values_helper( input.inputs, values[ input.name ], trans, messages[ input.name ], context, prefix ) + self.check_and_update_param_values_helper( input.inputs, values[ input.name ], trans, messages[ input.name ], context, prefix, update_values=update_values ) else: # Regular tool parameter, no recursion needed try: diff --git a/lib/galaxy/tools/evaluation.py b/lib/galaxy/tools/evaluation.py index 1934d0936dc1..6e845b94b70c 100644 --- a/lib/galaxy/tools/evaluation.py +++ b/lib/galaxy/tools/evaluation.py @@ -54,7 +54,7 @@ def set_compute_environment( self, compute_environment, get_special=None ): incoming = self.tool.params_from_strings( incoming, self.app ) # Full parameter validation - request_context = WorkRequestContext( app=self.app, user=job.history.user, history=job.history ) + request_context = WorkRequestContext( app=self.app, user=job.history and job.history.user, history=job.history ) def validate_inputs( input, value, prefixed_name, prefixed_label, context ): value = input.from_html( value, request_context, context ) diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 37931da7e5b6..4433d6b8b9d5 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -1080,7 +1080,7 @@ def item_callback( trans, key, input, value, error, old_value, context ): def check_and_update_state( self ): inputs = self.state.inputs - return self.tool.check_and_update_param_values( inputs, self.trans ) + return self.tool.check_and_update_param_values( inputs, self.trans, workflow_building_mode=True ) def compute_runtime_state( self, trans, step_updates=None, source="html" ): # Warning: This method destructively modifies existing step state.