From a3d694de70a58cfc553a6e2fff4df37ce4870a55 Mon Sep 17 00:00:00 2001 From: Daniel Blankenberg Date: Fri, 8 May 2015 09:30:04 -0400 Subject: [PATCH] Fixes for BaseURLToolParameter. Data source tools will now work again. Restores consistency to various ways that one might get the parameter value. --- lib/galaxy/tools/__init__.py | 8 +++++--- lib/galaxy/tools/parameters/basic.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index c131a42f349..88af8170c98 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -1890,10 +1890,12 @@ class Tool( object, Dictifiable ): """ args = dict() for key, param in self.inputs.iteritems(): - if isinstance( param, HiddenToolParameter ): + # BaseURLToolParameter is now a subclass of HiddenToolParameter, so + # we must check if param is a BaseURLToolParameter first + if isinstance( param, BaseURLToolParameter ): + args[key] = param.get_initial_value( trans, None ) + elif isinstance( param, HiddenToolParameter ): args[key] = model.User.expand_user_properties( trans.user, param.value ) - elif isinstance( param, BaseURLToolParameter ): - args[key] = param.get_value( trans ) else: raise Exception( "Unexpected parameter type" ) return args diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 03cbcc31dcb..adbd85890ee 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -652,6 +652,7 @@ class HiddenToolParameter( ToolParameter ): def get_label( self ): return None + class ColorToolParameter( ToolParameter ): """ Parameter that stores a color. @@ -682,9 +683,23 @@ class BaseURLToolParameter( HiddenToolParameter ): super( BaseURLToolParameter, self ).__init__( tool, input_source ) self.value = input_source.get( 'value', '' ) + def get_initial_value( self, trans, context, history=None ): + return self._get_value() + + def get_html_field( self, trans=None, value=None, other_values={} ): + return form_builder.HiddenField( self.name, self._get_value() ) + def from_html( self, value=None, trans=None, context={} ): + return self._get_value() + + def _get_value( self ): return url_for( self.value, qualified=True ) + def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ): + d = super( BaseURLToolParameter, self ).to_dict( trans ) + d[ 'value' ] = self._get_value() + return d + DEFAULT_VALUE_MAP = lambda x: x