diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py
index c9175afa763..30c40c4611b 100755
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -1661,12 +1661,6 @@ class Tool( object, Dictifiable ):
tool_model[ 'inputs' ] = {}
populate_model( self.inputs, state_inputs, tool_model[ 'inputs' ] )
- # sanitize tool state
- def value_to_basic( input, value, parent, **kwargs ):
- parent[ input.name ] = input.value_to_basic( value, self.app )
-
- visit_input_values( self.inputs, state_inputs, value_to_basic )
-
# create tool help
tool_help = ''
if self.help:
@@ -1692,7 +1686,7 @@ class Tool( object, Dictifiable ):
'versions' : tool_versions,
'requirements' : [ { 'name' : r.name, 'version' : r.version } for r in self.requirements ],
'errors' : state_errors,
- 'state_inputs' : state_inputs,
+ 'state_inputs' : params_to_strings( self.inputs, state_inputs, self.app ),
'job_id' : trans.security.encode_id( job.id ) if job else None,
'job_remap' : self._get_job_remap( job ),
'history_id' : trans.security.encode_id( history.id ),
diff --git a/lib/galaxy/tools/parameters/__init__.py b/lib/galaxy/tools/parameters/__init__.py
index 0e2e51af2c7..a2d0a407595 100644
--- a/lib/galaxy/tools/parameters/__init__.py
+++ b/lib/galaxy/tools/parameters/__init__.py
@@ -24,7 +24,7 @@ def visit_input_values( inputs, input_values, callback, name_prefix='', label_pr
>>> from xml.etree.ElementTree import XML
>>> from galaxy.util.bunch import Bunch
>>> from galaxy.util.odict import odict
- >>> from galaxy.tools.parameters.basic import TextToolParameter
+ >>> from galaxy.tools.parameters.basic import TextToolParameter, BooleanToolParameter
>>> from galaxy.tools.parameters.grouping import Repeat
>>> a = TextToolParameter( None, XML( '' ) )
>>> b = Repeat()
@@ -32,7 +32,7 @@ def visit_input_values( inputs, input_values, callback, name_prefix='', label_pr
>>> d = Repeat()
>>> e = TextToolParameter( None, XML( '' ) )
>>> f = Conditional()
- >>> g = TextToolParameter( None, XML( '' ) )
+ >>> g = BooleanToolParameter( None, XML( '' ) )
>>> h = TextToolParameter( None, XML( '' ) )
>>> i = TextToolParameter( None, XML( '' ) )
>>> b.name = 'b'
@@ -45,12 +45,16 @@ def visit_input_values( inputs, input_values, callback, name_prefix='', label_pr
>>>
>>> def visitor( input, value, prefix, prefixed_name, **kwargs ):
... print 'name=%s, prefix=%s, prefixed_name=%s, value=%s' % ( input.name, prefix, prefixed_name, value )
- >>> visit_input_values( odict([('a',a),('b',b)]), odict([ ('a', 1), ('b', [ odict([('c', 3), ( 'd', [odict([ ('e',5), ('f', odict([ ('g','true'), ('h',7) ])) ]) ])]) ]) ]), visitor )
+ >>> inputs = odict([('a',a),('b',b)])
+ >>> nested = odict([ ('a', 1), ('b', [ odict([('c', 3), ( 'd', [odict([ ('e', 5), ('f', odict([ ('g', True), ('h', 7) ])) ]) ])]) ]) ])
+ >>> visit_input_values( inputs, nested, visitor )
name=a, prefix=, prefixed_name=a, value=1
name=c, prefix=b_0|, prefixed_name=b_0|c, value=3
name=e, prefix=b_0|d_0|, prefixed_name=b_0|d_0|e, value=5
- name=g, prefix=b_0|d_0|, prefixed_name=b_0|d_0|f|g, value=true
+ name=g, prefix=b_0|d_0|, prefixed_name=b_0|d_0|f|g, value=True
name=h, prefix=b_0|d_0|, prefixed_name=b_0|d_0|f|h, value=7
+ >>> params_from_strings( inputs, params_to_strings( inputs, nested, None ), None )[ 'b' ][ 0 ][ 'd' ][ 0 ][ 'f' ][ 'g' ] is True
+ True
"""
def callback_helper( input, input_values, name_prefix, label_prefix, parent_prefix, context=None, error=None ):
args = {
diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py
index 356625e0f5a..d60be2364ae 100644
--- a/lib/galaxy/workflow/modules.py
+++ b/lib/galaxy/workflow/modules.py
@@ -1,7 +1,6 @@
"""
Modules used in building workflows
"""
-import copy
import logging
from json import dumps, loads
from xml.etree.ElementTree import Element
@@ -965,11 +964,8 @@ class ToolModule( WorkflowModule ):
input_dicts.append( { "name": name, "description": "runtime parameter for tool %s" % self.get_name() } )
return input_dicts
- def get_post_job_actions( self, incoming=None):
- if incoming is None:
- return self.post_job_actions
- else:
- return ActionBox.handle_incoming(incoming)
+ def get_post_job_actions( self, incoming ):
+ return ActionBox.handle_incoming( incoming )
def get_config_form( self ):
self.add_dummy_datasets()
@@ -977,8 +973,7 @@ class ToolModule( WorkflowModule ):
tool=self.tool, values=self.state.inputs, errors=( self.errors or {} ) )
def update_state( self, incoming ):
- self.label = incoming.get( 'label' )
- self.state.inputs = copy.deepcopy( incoming )
+ self.recover_state( incoming )
def check_and_update_state( self ):
inputs = self.state.inputs