diff --git a/lib/galaxy/datatypes/data.py b/lib/galaxy/datatypes/data.py
index 3858efd7692..5cee678b67c 100644
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -137,13 +137,14 @@ class Data( object ):
"""Returns formatted html of dataset info"""
try:
# Change new line chars to html
- if dataset.info.find( '\r\n' ) >= 0:
- dataset.info = dataset.info.replace( '\r\n', '
' )
- if dataset.info.find( '\r' ) >= 0:
- dataset.info = dataset.info.replace( '\r', '
' )
- if dataset.info.find( '\n' ) >= 0:
- dataset.info = dataset.info.replace( '\n', '
' )
- return escape( dataset.info )
+ info = escape( dataset.info )
+ if info.find( '\r\n' ) >= 0:
+ info = info.replace( '\r\n', '
' )
+ if info.find( '\r' ) >= 0:
+ info = info.replace( '\r', '
' )
+ if info.find( '\n' ) >= 0:
+ info = info.replace( '\n', '
' )
+ return info
except:
return "info unavailable"
def validate(self, dataset):
diff --git a/lib/galaxy/tools/actions/__init__.py b/lib/galaxy/tools/actions/__init__.py
index 3e0093d1b60..b9230b2fbac 100644
--- a/lib/galaxy/tools/actions/__init__.py
+++ b/lib/galaxy/tools/actions/__init__.py
@@ -6,6 +6,7 @@ from galaxy.util.none_like import NoneDataset
from galaxy.web import url_for
from galaxy.jobs import JOB_OK
import galaxy.tools
+from types import *
import logging
log = logging.getLogger( __name__ )
@@ -65,8 +66,21 @@ class DefaultToolAction( object ):
param_values[input.name] = input_datasets[ prefix + input.name ]
tool.visit_inputs( param_values, visitor )
return input_datasets
-
+
def execute(self, tool, trans, incoming={}, set_output_hid=True ):
+ def make_dict_copy( from_dict ):
+ """
+ Makes a copy of input dictionary from_dict such that all values that are dictionaries
+ result in creation of a new dictionary ( a sort of deepcopy ). We may need to handle
+ other complex types ( e.g., lists, etc ), but not sure...
+ """
+ copy_from_dict = {}
+ for key, value in from_dict.items():
+ if type( value ).__name__ == 'dict':
+ copy_from_dict[ key ] = make_dict_copy( value )
+ else:
+ copy_from_dict[ key ] = value
+ return copy_from_dict
def wrap_values( inputs, input_values ):
# Wrap tool inputs as necessary
for input in inputs.itervalues():
@@ -75,7 +89,7 @@ class DefaultToolAction( object ):
wrap_values( input.inputs, d )
elif isinstance( input, Conditional ):
values = input_values[ input.name ]
- current = values["__current_case__"]
+ current = values[ "__current_case__" ]
wrap_values( input.cases[current].inputs, values )
elif isinstance( input, DataToolParameter ):
input_values[ input.name ] = \
@@ -172,7 +186,7 @@ class DefaultToolAction( object ):
data.blurb = "queued"
# Set output label
if output.label:
- params = dict( incoming )
+ params = make_dict_copy( incoming )
# wrapping the params allows the tool config to contain things like
#
#