diff --git a/lib/galaxy/datatypes/data.py b/lib/galaxy/datatypes/data.py
index bce7e29fb6b..45399c62d5a 100644
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -506,7 +506,7 @@ class Data( object ):
"""Returns ( target_ext, existing converted dataset )"""
return datatypes_registry.find_conversion_destination_for_dataset_by_extensions( dataset, accepted_formats, **kwd )
- def convert_dataset(self, trans, original_dataset, target_type, return_output=False, visible=True, deps=None, target_context=None):
+ def convert_dataset(self, trans, original_dataset, target_type, return_output=False, visible=True, deps=None, target_context=None, history=None):
"""This function adds a job to the queue to convert a dataset to another type. Returns a message about success/failure."""
converter = trans.app.datatypes_registry.get_converter_by_target_type( original_dataset.ext, target_type )
@@ -529,7 +529,7 @@ class Data( object ):
params[input_name] = original_dataset
# Run converter, job is dispatched through Queue
- converted_dataset = converter.execute( trans, incoming=params, set_output_hid=visible )[1]
+ converted_dataset = converter.execute( trans, incoming=params, set_output_hid=visible, history=history )[1]
if len(params) > 0:
trans.log_event( "Converter params: %s" % (str(params)), tool_id=converter.id )
if not visible:
diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py
index 60a0578c323..66cbd175f7b 100644
--- a/lib/galaxy/model/__init__.py
+++ b/lib/galaxy/model/__init__.py
@@ -2045,7 +2045,7 @@ class DatasetInstance( object ):
depends_list = []
return dict([ (dep, self.get_converted_dataset(trans, dep)) for dep in depends_list ])
- def get_converted_dataset(self, trans, target_ext, target_context=None):
+ def get_converted_dataset(self, trans, target_ext, target_context=None, history=None):
"""
Return converted dataset(s) if they exist, along with a dict of dependencies.
If not converted yet, do so and return None (the first time). If unconvertible, raise exception.
@@ -2084,7 +2084,7 @@ class DatasetInstance( object ):
raise NoConverterException("A dependency (%s) is missing a converter." % dependency)
except KeyError:
pass # No deps
- new_dataset = next(iter(self.datatype.convert_dataset( trans, self, target_ext, return_output=True, visible=False, deps=deps, target_context=target_context ).values()))
+ new_dataset = next(iter(self.datatype.convert_dataset( trans, self, target_ext, return_output=True, visible=False, deps=deps, target_context=target_context, history=history ).values()))
new_dataset.name = self.name
self.copy_attributes( new_dataset )
assoc = ImplicitlyConvertedDatasetAssociation( parent=self, file_type=target_ext, dataset=new_dataset, metadata_safe=False )
diff --git a/lib/galaxy/tools/actions/__init__.py b/lib/galaxy/tools/actions/__init__.py
index ddefd7ffe52..f1143d8a1ee 100644
--- a/lib/galaxy/tools/actions/__init__.py
+++ b/lib/galaxy/tools/actions/__init__.py
@@ -41,7 +41,7 @@ class ToolAction( object ):
class DefaultToolAction( object ):
"""Default tool action is to run an external command"""
- def collect_input_datasets( self, tool, param_values, trans, current_user_roles=None ):
+ def _collect_input_datasets( self, tool, param_values, trans, history, current_user_roles=None ):
"""
Collect any dataset inputs from incoming. Returns a mapping from
parameter name to Dataset instance for each tool parameter that is
@@ -66,7 +66,7 @@ class DefaultToolAction( object ):
if converted_dataset:
data = converted_dataset
else:
- data = data.get_converted_dataset( trans, target_ext, target_context=parent )
+ data = data.get_converted_dataset( trans, target_ext, target_context=parent, history=history )
if not trans.app.security_agent.can_access_dataset( current_user_roles, data.dataset ):
raise Exception( "User does not have permission to use a dataset (%s) provided for input." % data.id )
@@ -189,7 +189,7 @@ class DefaultToolAction( object ):
# input datasets can process these normally.
inp_dataset_collections = self.collect_input_dataset_collections( tool, incoming )
# Collect any input datasets from the incoming parameters
- inp_data = self.collect_input_datasets( tool, incoming, trans, current_user_roles=current_user_roles )
+ inp_data = self._collect_input_datasets( tool, incoming, trans, history=history, current_user_roles=current_user_roles )
return history, inp_data, inp_dataset_collections
diff --git a/lib/galaxy/web/framework/middleware/remoteuser.py b/lib/galaxy/web/framework/middleware/remoteuser.py
index af7750d4362..96688a88387 100644
--- a/lib/galaxy/web/framework/middleware/remoteuser.py
+++ b/lib/galaxy/web/framework/middleware/remoteuser.py
@@ -150,6 +150,7 @@ class RemoteUser( object ):
'/user/api_keys',
'/user/edit_username',
'/user/dbkeys',
+ '/user/logout',
'/user/toolbox_filters',
'/user/set_default_permissions',
'/user/change_communication',
diff --git a/lib/galaxy/webapps/galaxy/controllers/workflow.py b/lib/galaxy/webapps/galaxy/controllers/workflow.py
index 7d1e742b2d3..37150705caa 100644
--- a/lib/galaxy/webapps/galaxy/controllers/workflow.py
+++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py
@@ -1052,6 +1052,10 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
history=history
)
else:
+ # If there is just one dataset name selected or one dataset collection, these
+ # come through as string types instead of lists. xref #3247.
+ dataset_names = util.listify(dataset_names)
+ dataset_collection_names = util.listify(dataset_collection_names)
stored_workflow = extract_workflow(
trans,
user=user,
diff --git a/test/functional/tools/implicit_conversion.xml b/test/functional/tools/implicit_conversion.xml
new file mode 100644
index 00000000000..8a7044cebd3
--- /dev/null
+++ b/test/functional/tools/implicit_conversion.xml
@@ -0,0 +1,23 @@
+
+
+ cut -f 1 '$input1' > 'col_output'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/functional/tools/sample_datatypes_conf.xml b/test/functional/tools/sample_datatypes_conf.xml
index d4cb8679693..8e129a8d5f3 100644
--- a/test/functional/tools/sample_datatypes_conf.xml
+++ b/test/functional/tools/sample_datatypes_conf.xml
@@ -6,7 +6,9 @@
-
+
+
+
diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml
index 33d466c9ad6..8a2a9b8a2b3 100644
--- a/test/functional/tools/samples_tool_conf.xml
+++ b/test/functional/tools/samples_tool_conf.xml
@@ -74,6 +74,7 @@
+