Fixes for BaseURLToolParameter. Data source tools will now work again. Restores consistency to various ways that one might get the parameter value.

This commit is contained in:
Daniel Blankenberg
2015-05-08 09:30:04 -04:00
parent 95d7108b1b
commit a3d694de70
2 changed files with 20 additions and 3 deletions
+5 -3
View File
@@ -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
+15
View File
@@ -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