Merge pull request #115 from guerler/revise_validation

Revise late validation of tool parameters
This commit is contained in:
Dannon Baker
2015-04-16 09:58:14 -04:00
15 changed files with 102 additions and 179 deletions
@@ -84,7 +84,7 @@ define(['utils/utils',
/** Data input field
*/
_fieldData: function(input_def) {
if (!this.app.options.is_dynamic) {
if (this.app.options.is_workflow) {
input_def.info = 'Data input \'' + input_def.name + '\' (' + Utils.textify(input_def.extensions.toString()) + ')';
input_def.value = null;
return this._fieldHidden(input_def);
@@ -107,7 +107,7 @@ define(['utils/utils',
*/
_fieldSelect: function (input_def) {
// show text field in if dynamic fields are disabled e.g. in workflow editor
if (!this.app.options.is_dynamic && input_def.is_dynamic) {
if (input_def.options.length == 0 && this.app.options.is_workflow) {
return this._fieldText(input_def);
}
@@ -157,10 +157,10 @@ define(['utils/utils',
*/
_fieldDrilldown: function (input_def) {
// show text field in if dynamic fields are disabled e.g. in workflow editor
if (!this.app.options.is_dynamic && input_def.is_dynamic) {
if (input_def.options.length == 0 && this.app.options.is_workflow) {
return this._fieldText(input_def);
}
// create drill down field
var self = this;
return new Ui.Drilldown.View({
@@ -185,13 +185,16 @@ define(['utils/utils',
if (!Utils.validate(input_def.value)) {
input_def.value = '';
} else {
if (input_def.value instanceof Array) {
input_def.value = value.toString();
} else {
input_def.value = String(input_def.value).replace(/[\[\]'"\s]/g, '');
if (input_def.multiple) {
input_def.value = input_def.value.replace(/,/g, '\n');
if ($.isArray(input_def.value)) {
var str_value = '';
for (var i in input_def.value) {
str_value += String(input_def.value[i]);
if (!input_def.multiple) {
break;
}
str_value += '\n';
}
input_def.value = str_value;
}
}
}
+2 -2
View File
@@ -11,8 +11,8 @@ define(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
initialize: function(options) {
// options
this.optionsDefault = {
// uses dynamic fields instead of text fields
is_dynamic : true,
// uses workflow editor mode i.e. text instead of select fields
is_workflow : false,
// shows form in narrow view mode
narrow : false,
// shows errors on start
@@ -24,7 +24,7 @@ define(['utils/utils', 'mvc/tools/tools-form-base'],
text_disable : 'Set at Runtime',
// configure workflow style
is_dynamic : false,
is_workflow : true,
narrow : true,
initial_errors : true,
cls : 'ui-portlet-narrow',
@@ -37,13 +37,6 @@ define(['utils/utils', 'mvc/tools/tools-form-base'],
}
});
// declare fields as optional
Utils.deepeach(options.inputs, function(item) {
if (item.type) {
item.optional = (['data', 'data_hidden', 'hidden', 'repeat', 'conditional']).indexOf(item.type) == -1;
}
});
// declare conditional fields as not optional
Utils.deepeach(options.inputs, function(item) {
if (item.type) {
+20 -18
View File
@@ -2257,7 +2257,7 @@ class Tool( object, Dictifiable ):
return tool_dict
def to_json (self, trans, kwd={}, is_dynamic=True):
def to_json (self, trans, kwd={}, is_workflow=False):
"""
Recursively creates a tool dictionary containing repeats, dynamic options and updated states.
"""
@@ -2369,7 +2369,7 @@ class Tool( object, Dictifiable ):
error = 'State validation failed.'
# skip dynamic fields if deactivated
if not is_dynamic and input.is_dynamic:
if is_workflow and input.is_dynamic:
return [value, None]
# validate value content
@@ -2463,29 +2463,31 @@ class Tool( object, Dictifiable ):
elif input.type == 'section':
iterate( tool_dict['inputs'], input.inputs, group_state, other_values )
else:
# create input dictionary, try to pass other_values if to_dict function supports it e.g. dynamic options
# identify name
input_name = tool_dict.get('name')
# expand input dictionary incl. repeats and dynamic_parameters
try:
tool_dict = input.to_dict(trans, other_values=other_values)
except Exception:
log.exception('tools::to_json() - Skipping parameter expansion for %s.' % input_name)
pass
# identify name
input_name = tool_dict.get('name')
if input_name:
# backup default value
try:
tool_dict['default_value'] = input.get_initial_value(trans, other_values)
except Exception:
# get initial value failed due to improper late validation
tool_dict['default_value'] = None
pass
# backup default value
try:
tool_dict['default_value'] = input.get_initial_value(trans, other_values)
except Exception:
log.exception('tools::to_json() - Getting initial value failed %s.' % input_name)
# get initial value failed due to improper late validation
tool_dict['default_value'] = None
pass
# update input value from tool state
tool_dict['value'] = state_inputs.get(input_name, tool_dict['default_value'])
# update input value from tool state
tool_dict['value'] = state_inputs.get(input_name, tool_dict['default_value'])
# sanitize values
sanitize(tool_dict, 'value')
sanitize(tool_dict, 'default_value')
# sanitize values
sanitize(tool_dict, 'value')
sanitize(tool_dict, 'default_value')
# backup final input dictionary
group_inputs[input_index] = tool_dict
+4 -6
View File
@@ -64,12 +64,10 @@ def check_param( trans, param, incoming_value, param_values, source='html' ):
value = param.from_html( value, trans, param_values )
else:
value = param.from_json( value, trans, param_values )
# Only validate if late validation is not needed
if not param.need_late_validation( trans, param_values ):
# Allow the value to be converted if necessary
filtered_value = param.filter_value( value, trans, param_values )
# Then do any further validation on the value
param.validate( filtered_value, trans.history )
# Allow the value to be converted if necessary
filtered_value = param.filter_value( value, trans, param_values )
# Then do any further validation on the value
param.validate( filtered_value, trans.history )
elif value is None and isinstance( param, SelectToolParameter ):
# An empty select list or column list
param.validate( value, trans.history )
+27 -111
View File
@@ -203,10 +203,7 @@ class ToolParameter( object, Dictifiable ):
for validator in self.validators:
validator.validate( value, history )
def need_late_validation( self, trans, context ):
return False
def to_dict( self, trans, view='collection', value_mapper=None ):
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
""" to_dict tool parameter. This can be overridden by subclasses. """
tool_dict = super( ToolParameter, self ).to_dict()
#TODO: wrapping html as it causes a lot of errors on subclasses - needs histories, etc.
@@ -290,7 +287,7 @@ class TextToolParameter( ToolParameter ):
def get_initial_value( self, trans, context, history=None ):
return self.value
def to_dict( self, trans, view='collection', value_mapper=None ):
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
d = super(TextToolParameter, self).to_dict(trans)
d['area'] = self.area
d['size'] = self.size
@@ -495,7 +492,7 @@ class BooleanToolParameter( ToolParameter ):
else:
return self.falsevalue
def to_dict( self, trans, view='collection', value_mapper=None ):
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
d = super(BooleanToolParameter, self).to_dict(trans)
d['value'] = self.checked
d['truevalue'] = self.truevalue
@@ -705,7 +702,7 @@ class BaseURLToolParameter( ToolParameter ):
# BaseURLToolParameters are ultimately "hidden" parameters
return None
def to_dict( self, trans, view='collection', value_mapper=None ):
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
d = super( BaseURLToolParameter, self ).to_dict( trans )
d['value'] = self.get_value( trans )
return d
@@ -852,9 +849,9 @@ class SelectToolParameter( ToolParameter ):
def get_html_field( self, trans=None, value=None, context={} ):
# Dynamic options are not yet supported in workflow, allow
# specifying the value as text for now.
if self.need_late_validation( trans, context ):
if value is not None:
assert isinstance( value, UnvalidatedValue ), "Late validation needed for '%s', but provided value (%s) is not of type UnvalidatedValue (%s)." % ( self.name, value, type( value ) )
options = list(self.get_options( trans, context ))
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
if isinstance( value, UnvalidatedValue ):
value = value.value
if self.multiple:
if value is None:
@@ -870,7 +867,6 @@ class SelectToolParameter( ToolParameter ):
# We could have an unvalidated value here when e.g. running a workflow.
value = [ val.value if isinstance( val, UnvalidatedValue ) else val for val in value ]
field = form_builder.SelectField( self.name, self.multiple, self.display, self.refresh_on_change, refresh_on_change_values=self.refresh_on_change_values )
options = self.get_options( trans, context )
for text, optval, selected in options:
if isinstance( optval, UnvalidatedValue ):
optval = optval.value
@@ -881,7 +877,8 @@ class SelectToolParameter( ToolParameter ):
return field
def from_html( self, value, trans=None, context={} ):
if self.need_late_validation( trans, context ):
legal_values = self.get_legal_values( trans, context )
if len(list(legal_values)) == 0 and (trans is None or trans.workflow_building_mode):
if self.multiple:
# While it is generally allowed that a select value can be '',
# we do not allow this to be the case in a dynamically
@@ -896,7 +893,6 @@ class SelectToolParameter( ToolParameter ):
# use \r\n to separate lines.
value = value.split()
return UnvalidatedValue( value )
legal_values = self.get_legal_values( trans, context )
if not legal_values and self.optional:
return None
if not legal_values:
@@ -963,61 +959,12 @@ class SelectToolParameter( ToolParameter ):
return UnvalidatedValue( value["value"] )
return super( SelectToolParameter, self ).value_from_basic( value, app, ignore_errors=ignore_errors )
def need_late_validation( self, trans, context ):
"""
Determine whether we need to wait to validate this parameters value
given the current state. For parameters with static options this is
always false (can always validate immediately). For parameters with
dynamic options, we need to check whether the other parameters which
determine what options are valid have been set. For the old style
dynamic options which do not specify dependencies, this is always true
(must validate at runtime).
"""
# Option list is statically defined, never need late validation
if not self.is_dynamic:
return False
# Old style dynamic options, no dependency information so there isn't
# a lot we can do: if we're dealing with workflows, have to assume
# late validation no matter what.
if self.dynamic_options is not None and ( trans is None or trans.workflow_building_mode ):
return True
# If we got this far, we can actually look at the dependencies
# to see if their values will not be available until runtime.
for dep_name in self.get_dependencies():
# This may not be completely correct, but it's possible to go
# through the layers indicated below without assigning dep_value,
# which is even worse. TODO fix it?
dep_value = None
if dep_name in context:
dep_value = context[ dep_name ]
else:
# Quick hack to check deeper in the context.
# TODO: Context should really be scoped and the correct subset passed along.
# This happens specifically in all the GATK tools, the way the reference genome is handled.
for layer in context.itervalues():
if isinstance( layer, dict ) and self.name in layer and dep_name in layer:
dep_value = layer[dep_name]
# Dependency on a dataset that does not yet exist
if isinstance( dep_value, DummyDataset ):
return True
# Dependency on a value that has not been checked
if isinstance( dep_value, UnvalidatedValue ):
return True
# Dependency on a value that does not yet exist
if isinstance( dep_value, RuntimeValue ):
return True
#dataset not ready yet
if hasattr( self, 'ref_input' ) and isinstance( dep_value, self.tool.app.model.HistoryDatasetAssociation ) and ( dep_value.is_pending or not dep_value.datatype.matches_any( self.ref_input.formats ) ):
return True
# Dynamic, but all dependenceis are known and have values
return False
def get_initial_value( self, trans, context, history=None ):
# More working around dynamic options for workflow
if self.need_late_validation( trans, context ):
options = list( self.get_options( trans, context ) )
if len(options) == 0 and (trans is None or trans.workflow_building_mode):
# Really the best we can do?
return UnvalidatedValue( None )
options = list( self.get_options( trans, context ) )
value = [ optval for _, optval, selected in options if selected ]
if len( value ) == 0:
if not self.multiple and options:
@@ -1143,7 +1090,7 @@ class GenomeBuildParameter( SelectToolParameter ):
def get_legal_values( self, trans, other_values ):
return set( dbkey for dbkey, _ in self._get_dbkey_names( trans=trans ) )
def to_dict( self, trans, view='collection', value_mapper=None ):
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
# skip SelectToolParameter (the immediate parent) bc we need to get options in a different way here
d = ToolParameter.to_dict( self, trans )
@@ -1266,8 +1213,12 @@ class ColumnListParameter( SelectToolParameter ):
return []
column_list = None
for dataset in util.listify( dataset ):
# Handle columns not available.
if not dataset.metadata.columns:
unavailable = False
if not hasattr(dataset, 'metadata'):
unavailable = True
elif not dataset.metadata.columns:
unavailable = True
if unavailable:
default_column_list = []
if self.accept_default:
default_column_list.append( self.default_value or '1' )
@@ -1327,9 +1278,6 @@ class ColumnListParameter( SelectToolParameter ):
def get_initial_value( self, trans, context, history=None ):
if self.default_value is not None:
# dataset not ready / in workflow / etc
if self.need_late_validation( trans, context ):
return UnvalidatedValue( self.default_value )
return self.default_value
return SelectToolParameter.get_initial_value( self, trans, context )
@@ -1339,33 +1287,6 @@ class ColumnListParameter( SelectToolParameter ):
def get_dependencies( self ):
return [ self.data_ref ]
def need_late_validation( self, trans, context ):
if super( ColumnListParameter, self ).need_late_validation( trans, context ):
return True
if self.data_ref not in context:
return False
# Get the selected dataset if selected
referent = context[ self.data_ref ]
if getattr( referent, 'history_content_type', None ) == "dataset_collection":
# TODO: also check datasets have been populated.
referent = referent.collection.dataset_instances
datasets = util.listify( referent )
for dataset in datasets:
if dataset:
# Check if metadata is available
if not hasattr(dataset, 'metadata'):
return True
# Check if the dataset does not have the expected metadata for columns
if not dataset.metadata.columns:
# Only allow late validation if the dataset is not yet ready
# (since we have reason to expect the metadata to be ready eventually)
if dataset.is_pending or not dataset.datatype.matches_any( self.ref_input.formats ):
return True
# No late validation
return False
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
# call parent to_dict
d = super( ColumnListParameter, self ).to_dict( trans, other_values=other_values)
@@ -1569,9 +1490,9 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
def get_html_field( self, trans=None, value=None, other_values={} ):
# Dynamic options are not yet supported in workflow, allow
# specifying the value as text for now.
if self.need_late_validation( trans, other_values ):
if value is not None:
assert isinstance( value, UnvalidatedValue ), "Late validation needed for '%s', but provided value (%s) is not of type UnvalidatedValue (%s)." % ( self.name, value, type( value ) )
options = self.get_options( trans, value, other_values )
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
if isinstance( value, UnvalidatedValue ):
value = value.value
if self.multiple:
if value is None:
@@ -1581,10 +1502,11 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
return form_builder.TextArea( self.name, value=value )
else:
return form_builder.TextField( self.name, value=(value or "") )
return form_builder.DrillDownField( self.name, self.multiple, self.display, self.refresh_on_change, self.get_options( trans, value, other_values ), value, refresh_on_change_values=self.refresh_on_change_values )
return form_builder.DrillDownField( self.name, self.multiple, self.display, self.refresh_on_change, options, value, refresh_on_change_values=self.refresh_on_change_values )
def from_html( self, value, trans=None, other_values={} ):
if self.need_late_validation( trans, other_values ):
legal_values = self.get_legal_values( trans, other_values )
if len(list(legal_values)) == 0 and (trans is None or trans.workflow_building_mode):
if self.multiple:
if value == '': # No option selected
value = None
@@ -1600,7 +1522,6 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
if not( self.repeat ) and len( value ) > 1:
assert self.multiple, "Multiple values provided but parameter %s is not expecting multiple values" % self.name
rval = []
legal_values = self.get_legal_values( trans, other_values )
assert legal_values, "Parameter %s requires a value, but has no legal values defined" % self.name
for val in value:
if val not in legal_values:
@@ -1656,11 +1577,11 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
initial_values.append( option['value'] )
recurse_options( initial_values, option['options'] )
# More working around dynamic options for workflow
if self.need_late_validation( trans, context ):
# Really the best we can do?
options = self.get_options( trans=trans, other_values=context )
if len(list(options)) == 0 and (trans is None or trans.workflow_building_mode):
return UnvalidatedValue( None )
initial_values = []
recurse_options( initial_values, self.get_options( trans=trans, other_values=context ) )
recurse_options( initial_values, options )
if len( initial_values ) == 0:
initial_values = None
return initial_values
@@ -2120,11 +2041,6 @@ class DataToolParameter( BaseDataToolParameter ):
else:
validator.validate( value, history )
def need_late_validation( self, trans, context ):
if trans is None or trans.workflow_building_mode:
return True
return False
def get_dependencies( self ):
"""
Get the *names* of the other params this param depends on.
+1 -1
View File
@@ -331,7 +331,7 @@ class WorkflowsAPIController(BaseAPIController, UsesStoredWorkflowMixin, UsesAnn
} )
# create tool model and default tool state (if missing)
tool_model = module.tool.to_json(trans, tool_inputs, is_dynamic=False)
tool_model = module.tool.to_json(trans, tool_inputs, is_workflow=True)
module.state.inputs = copy.deepcopy(tool_model['state_inputs'])
return {
'tool_model' : tool_model,
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","initialize","app","this","create","input_def","undefined","value","default_value","field","fieldClass","type","call","incompatible","options","_fieldSelect","_fieldText","console","debug","_fieldData","is_dynamic","info","name","textify","extensions","toString","_fieldHidden","self","View","id","optional","multiple","onchange","trigger","error_text","i","option","push","label","SelectClass","Select","display","Checkbox","Radio","searchable","_fieldDrilldown","Drilldown","area","validate","Array","String","replace","Input","_fieldSlider","Slider","precise","min","max","Hidden","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary"],"mappings":"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"}
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","ColorPicker","Backbone","Model","extend","types","text","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","initialize","app","this","create","input_def","undefined","value","default_value","field","fieldClass","type","call","incompatible","options","_fieldSelect","_fieldText","console","debug","_fieldData","is_workflow","info","name","textify","extensions","toString","_fieldHidden","self","View","id","optional","multiple","onchange","trigger","length","error_text","i","option","push","label","SelectClass","Select","display","Checkbox","Radio","searchable","_fieldDrilldown","Drilldown","area","validate","$","isArray","str_value","String","Input","_fieldSlider","Slider","precise","min","max","Hidden","_fieldBoolean","RadioButton","_fieldColor","_fieldLibrary"],"mappings":"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"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","optionsDefault","is_dynamic","narrow","initial_errors","cls","merge","console","debug","galaxy","parent","Galaxy","modal","Modal","setElement","_build","update","new_model","self","data","matchModel","input_id","node","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","wait","active","unwait","reciept","$el","empty","append","highlight","message","silent","input_element","element_list","error","$","animate","scrollTop","offset","top","errors","error_messages","matchResponse","off","_renderForm","create","current_check","checksum","on","new_check","onchange","reset","Message","section","inputs","incompatible","hide","show","portlet","icon","title","operations","buttons","addClass","persistent","status"],"mappings":"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"}
{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","optionsDefault","is_workflow","narrow","initial_errors","cls","merge","console","debug","galaxy","parent","Galaxy","modal","Modal","setElement","_build","update","new_model","self","data","matchModel","input_id","node","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","wait","active","is_dynamic","unwait","reciept","$el","empty","append","highlight","message","silent","input_element","element_list","error","$","animate","scrollTop","offset","top","errors","error_messages","matchResponse","off","_renderForm","create","current_check","checksum","on","new_check","onchange","reset","Message","section","inputs","incompatible","hide","show","portlet","icon","title","operations","buttons","addClass","persistent","status"],"mappings":"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"}
@@ -1 +1 @@
{"version":3,"file":"tools-form-workflow.js","sources":["../../../src/mvc/tools/tools-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","extend","initialize","options","this","node","workflow","active_node","console","debug","post_job_actions","merge","text_enable","text_disable","is_dynamic","narrow","initial_errors","cls","update_url","galaxy_config","root","update","data","self","update_field_data","form","errors","tool_model","deepeach","inputs","item","type","optional","indexOf","test_param","get","url","cache","success","datatypes","_makeSections","prototype","call","uid","label","name","area","help","value","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","push","input","action","argument","p_id","p","d","j","expand","action_arguments","slice","extensions","key",1,"sort","a","b","unshift","input_config","title"],"mappings":"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"}
{"version":3,"file":"tools-form-workflow.js","sources":["../../../src/mvc/tools/tools-form-workflow.js"],"names":["define","Utils","ToolFormBase","View","extend","initialize","options","this","node","workflow","active_node","console","debug","post_job_actions","merge","text_enable","text_disable","is_workflow","narrow","initial_errors","cls","update_url","galaxy_config","root","update","data","self","update_field_data","form","errors","tool_model","deepeach","inputs","item","type","test_param","optional","get","url","cache","success","datatypes","_makeSections","prototype","call","uid","label","name","area","help","value","annotation","output_id","output_terminals","Object","keys","String","Boolean","ignore","payload","host","window","location","i","_makeSection","visit","head","head_list","push","input","action","argument","p_id","p","d","j","expand","action_arguments","slice","extensions","key",1,"sort","a","b","unshift","input_config","title"],"mappings":"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"}
+1 -1
View File
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/ui/ui-misc","mvc/form/form-select-content","mvc/ui/ui-select-library","mvc/ui/ui-color-picker"],function(a,b,c,d,e){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary"},initialize:function(a){this.app=a},create:function(a){void 0===a.value&&(a.value=null),void 0===a.default_value&&(a.default_value=a.value);var b=null,c=this.types[a.type];return c&&"function"==typeof this[c]&&(b=this[c].call(this,a)),b||(this.app.incompatible=!0,b=a.options?this._fieldSelect(a):this._fieldText(a),console.debug("tools-form::_addRow() : Auto matched field type ("+a.type+").")),void 0!==a.value&&b.value(a.value),b},_fieldData:function(b){if(!this.app.options.is_dynamic)return b.info="Data input '"+b.name+"' ("+a.textify(b.extensions.toString())+")",b.value=null,this._fieldHidden(b);var d=this;return new c.View(this.app,{id:"field-"+b.id,extensions:b.extensions,optional:b.optional,multiple:b.multiple,type:b.type,data:b.options,onchange:function(){d.app.trigger("change")}})},_fieldSelect:function(a){if(!this.app.options.is_dynamic&&a.is_dynamic)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];for(var d in a.options){var e=a.options[d];c.push({label:e[0],value:e[1]})}var f=b.Select;switch(a.display){case"checkboxes":f=b.Checkbox;break;case"radio":f=b.Radio}var g=this;return new f.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",optional:a.optional&&null===a.default_value,multiple:a.multiple,optional:a.optional,searchable:a.searchable,onchange:function(){g.app.trigger("change")}})},_fieldDrilldown:function(a){if(!this.app.options.is_dynamic&&a.is_dynamic)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){c.options&&(c.area=c.multiple,a.validate(c.value)?c.value instanceof Array?c.value=value.toString():(c.value=String(c.value).replace(/[\[\]'"\s]/g,""),c.multiple&&(c.value=c.value.replace(/,/g,"\n"))):c.value="");var d=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(){d.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new e({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
define(["utils/utils","mvc/ui/ui-misc","mvc/form/form-select-content","mvc/ui/ui-select-library","mvc/ui/ui-color-picker"],function(a,b,c,d,e){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary"},initialize:function(a){this.app=a},create:function(a){void 0===a.value&&(a.value=null),void 0===a.default_value&&(a.default_value=a.value);var b=null,c=this.types[a.type];return c&&"function"==typeof this[c]&&(b=this[c].call(this,a)),b||(this.app.incompatible=!0,b=a.options?this._fieldSelect(a):this._fieldText(a),console.debug("tools-form::_addRow() : Auto matched field type ("+a.type+").")),void 0!==a.value&&b.value(a.value),b},_fieldData:function(b){if(this.app.options.is_workflow)return b.info="Data input '"+b.name+"' ("+a.textify(b.extensions.toString())+")",b.value=null,this._fieldHidden(b);var d=this;return new c.View(this.app,{id:"field-"+b.id,extensions:b.extensions,optional:b.optional,multiple:b.multiple,type:b.type,data:b.options,onchange:function(){d.app.trigger("change")}})},_fieldSelect:function(a){if(0==a.options.length&&this.app.options.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=[];for(var d in a.options){var e=a.options[d];c.push({label:e[0],value:e[1]})}var f=b.Select;switch(a.display){case"checkboxes":f=b.Checkbox;break;case"radio":f=b.Radio}var g=this;return new f.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",optional:a.optional&&null===a.default_value,multiple:a.multiple,optional:a.optional,searchable:a.searchable,onchange:function(){g.app.trigger("change")}})},_fieldDrilldown:function(a){if(0==a.options.length&&this.app.options.is_workflow)return this._fieldText(a);var c=this;return new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,onchange:function(){c.app.trigger("change")}})},_fieldText:function(c){if(c.options)if(c.area=c.multiple,a.validate(c.value)){if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}}else c.value="";var f=this;return new b.Input({id:"field-"+c.id,area:c.area,onchange:function(){f.app.trigger("change")}})},_fieldSlider:function(a){var c=this;return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,min:a.min,max:a.max,onchange:function(){c.app.trigger("change")}})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){var c=this;return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){c.app.trigger("change")}})},_fieldColor:function(a){var b=this;return new e({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldLibrary:function(a){var b=this;return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:function(){b.app.trigger("change")}})}})});
//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map
+1 -1
View File
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(b){this.optionsDefault={is_dynamic:!0,narrow:!1,initial_errors:!1,cls:"ui-portlet-limited"},this.options=a.merge(b,this.optionsDefault),console.debug(this.options);var d=parent.Galaxy;this.modal=d&&d.modal?d.modal:new c.Modal.View,this.setElement("<div/>"),this._build()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[a];if(d&&d.options&&!_.isEqual(d.options,c.options)){d.options=c.options;var e=b.field_list[a];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in c.options){var h=c.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),console.debug("Updating options for "+a)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&(a?c.wait():c.unwait())}},reciept:function(a){this.$el.empty(),this.$el.append(a)},highlight:function(a,b,c){var d=this.element_list[a];d&&(d.error(b||"Please verify this parameter."),c||$("html, body").animate({scrollTop:d.$el.offset().top-20},500))},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},_build:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e(this),this._renderForm(),this.data.create(),this.options.initial_errors&&this.errors(this.options);var b=this.data.checksum();this.on("change",function(){var c=a.data.checksum();c!=b&&(b=c,a.options.onchange&&a.options.onchange())}),this.on("reset",function(){for(var a in this.element_list)this.element_list[a].reset()})},_renderForm:function(){return this.message=new c.Message,this.section=new d.View(this,{inputs:this.options.inputs}),this.incompatible?(this.$el.hide(),void $("#tool-form-classic").show()):(this.portlet=new b.View({icon:"fa-wrench",title:this.options.title,cls:this.options.cls,operations:this.options.operations,buttons:this.options.buttons}),this.portlet.append(this.message.$el.addClass("ui-margin-top")),this.portlet.append(this.section.$el),this.$el.empty(),this.$el.append(this.portlet.$el),this.options.message&&this.message.update({persistent:!0,status:"warning",message:this.options.message}),void console.debug("tools-form-base::initialize() - Completed."))}})});
define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(b){this.optionsDefault={is_workflow:!1,narrow:!1,initial_errors:!1,cls:"ui-portlet-limited"},this.options=a.merge(b,this.optionsDefault),console.debug(this.options);var d=parent.Galaxy;this.modal=d&&d.modal?d.modal:new c.Modal.View,this.setElement("<div/>"),this._build()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[a];if(d&&d.options&&!_.isEqual(d.options,c.options)){d.options=c.options;var e=b.field_list[a];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in c.options){var h=c.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),console.debug("Updating options for "+a)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&(a?c.wait():c.unwait())}},reciept:function(a){this.$el.empty(),this.$el.append(a)},highlight:function(a,b,c){var d=this.element_list[a];d&&(d.error(b||"Please verify this parameter."),c||$("html, body").animate({scrollTop:d.$el.offset().top-20},500))},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},_build:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e(this),this._renderForm(),this.data.create(),this.options.initial_errors&&this.errors(this.options);var b=this.data.checksum();this.on("change",function(){var c=a.data.checksum();c!=b&&(b=c,a.options.onchange&&a.options.onchange())}),this.on("reset",function(){for(var a in this.element_list)this.element_list[a].reset()})},_renderForm:function(){return this.message=new c.Message,this.section=new d.View(this,{inputs:this.options.inputs}),this.incompatible?(this.$el.hide(),void $("#tool-form-classic").show()):(this.portlet=new b.View({icon:"fa-wrench",title:this.options.title,cls:this.options.cls,operations:this.options.operations,buttons:this.options.buttons}),this.portlet.append(this.message.$el.addClass("ui-margin-top")),this.portlet.append(this.section.$el),this.$el.empty(),this.$el.append(this.portlet.$el),this.options.message&&this.message.update({persistent:!0,status:"warning",message:this.options.message}),void console.debug("tools-form-base::initialize() - Completed."))}})});
//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/tools/tools-form-base"],function(a,b){var c=b.extend({initialize:function(c){if(this.node=workflow.active_node,!this.node)return void console.debug("FAILED - tools-form-workflow:initialize() - Node not found in workflow.");this.post_job_actions=this.node.post_job_actions||{},c=a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",is_dynamic:!1,narrow:!0,initial_errors:!0,cls:"ui-portlet-narrow",update_url:galaxy_config.root+"api/workflows/build_module",update:function(a){d.node.update_field_data(a),d.form.errors(a&&a.tool_model)}}),a.deepeach(c.inputs,function(a){a.type&&(a.optional=-1==["data","data_hidden","hidden","repeat","conditional"].indexOf(a.type))}),a.deepeach(c.inputs,function(a){a.type&&"conditional"==a.type&&(a.test_param.optional=!1)});var d=this;a.get({url:galaxy_config.root+"api/datatypes",cache:!0,success:function(a){d.datatypes=a,d._makeSections(c.inputs),b.prototype.initialize.call(d,c)}})},_makeSections:function(b){b[a.uid()]={label:"Annotation / Notes",name:"annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation};var c=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(c){b[a.uid()]={name:"pja__"+c+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+c])),ignore:"false",help:"An email notification will be send when the job has completed.",payload:{host:window.location.host}},b[a.uid()]={name:"pja__"+c+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+c])),ignore:"false",help:"Delete intermediate outputs if they are not used as input for another job."};for(var d in this.node.output_terminals)b[a.uid()]=this._makeSection(d)}},_makeSection:function(a){function b(c,d){d=d||[],d.push(c);for(var f in c.inputs){var g=c.inputs[f];if(g.action){if(g.name="pja__"+a+"__"+g.action,g.argument&&(g.name+="__"+g.argument),g.payload)for(var h in g.payload){var i=g.payload[h];g.payload[g.name+"__"+h]=i,delete i}var j=e.post_job_actions[g.action+a];if(j){for(var k in d)d[k].expand=!0;g.value=g.argument?j.action_arguments&&j.action_arguments[g.argument]||g.value:"true"}}g.inputs&&b(g,d.slice(0))}}var c=[];for(key in this.datatypes)c.push({0:this.datatypes[key],1:this.datatypes[key]});c.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),c.unshift({0:"Sequences",1:"Sequences"}),c.unshift({0:"Roadmaps",1:"Roadmaps"}),c.unshift({0:"Leave unchanged",1:"__empty__"});var d={title:"Add Actions: '"+a+"'",type:"section",inputs:[{action:"RenameDatasetAction",argument:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the result dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information.'},{action:"ChangeDatatypeAction",argument:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:c,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",argument:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",inputs:[{action:"ColumnSetAction",argument:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]},e=this;return b(d),d}});return{View:c}});
define(["utils/utils","mvc/tools/tools-form-base"],function(a,b){var c=b.extend({initialize:function(c){if(this.node=workflow.active_node,!this.node)return void console.debug("FAILED - tools-form-workflow:initialize() - Node not found in workflow.");this.post_job_actions=this.node.post_job_actions||{},c=a.merge(c,{text_enable:"Set in Advance",text_disable:"Set at Runtime",is_workflow:!0,narrow:!0,initial_errors:!0,cls:"ui-portlet-narrow",update_url:galaxy_config.root+"api/workflows/build_module",update:function(a){d.node.update_field_data(a),d.form.errors(a&&a.tool_model)}}),a.deepeach(c.inputs,function(a){a.type&&"conditional"==a.type&&(a.test_param.optional=!1)});var d=this;a.get({url:galaxy_config.root+"api/datatypes",cache:!0,success:function(a){d.datatypes=a,d._makeSections(c.inputs),b.prototype.initialize.call(d,c)}})},_makeSections:function(b){b[a.uid()]={label:"Annotation / Notes",name:"annotation",type:"text",area:!0,help:"Add an annotation or note for this step. It will be shown with the workflow.",value:this.node.annotation};var c=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(c){b[a.uid()]={name:"pja__"+c+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+c])),ignore:"false",help:"An email notification will be send when the job has completed.",payload:{host:window.location.host}},b[a.uid()]={name:"pja__"+c+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+c])),ignore:"false",help:"Delete intermediate outputs if they are not used as input for another job."};for(var d in this.node.output_terminals)b[a.uid()]=this._makeSection(d)}},_makeSection:function(a){function b(c,d){d=d||[],d.push(c);for(var f in c.inputs){var g=c.inputs[f];if(g.action){if(g.name="pja__"+a+"__"+g.action,g.argument&&(g.name+="__"+g.argument),g.payload)for(var h in g.payload){var i=g.payload[h];g.payload[g.name+"__"+h]=i,delete i}var j=e.post_job_actions[g.action+a];if(j){for(var k in d)d[k].expand=!0;g.value=g.argument?j.action_arguments&&j.action_arguments[g.argument]||g.value:"true"}}g.inputs&&b(g,d.slice(0))}}var c=[];for(key in this.datatypes)c.push({0:this.datatypes[key],1:this.datatypes[key]});c.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),c.unshift({0:"Sequences",1:"Sequences"}),c.unshift({0:"Roadmaps",1:"Roadmaps"}),c.unshift({0:"Leave unchanged",1:"__empty__"});var d={title:"Add Actions: '"+a+"'",type:"section",inputs:[{action:"RenameDatasetAction",argument:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the result dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information.'},{action:"ChangeDatatypeAction",argument:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:c,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",argument:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",inputs:[{action:"ColumnSetAction",argument:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",argument:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]},e=this;return b(d),d}});return{View:c}});
//# sourceMappingURL=../../../maps/mvc/tools/tools-form-workflow.js.map
@@ -8,7 +8,7 @@
from galaxy.tools.parameters import params_to_incoming
incoming = {}
params_to_incoming( incoming, tool.inputs, module.state.inputs, trans.app, to_html=False)
self.form_config = tool.to_json(trans, incoming, is_dynamic=False)
self.form_config = tool.to_json(trans, incoming, is_workflow=True)
self.form_config.update({
'id' : tool.id,
'job_id' : trans.security.encode_id( job.id ) if job else None,
+27 -16
View File
@@ -7,31 +7,42 @@ from .test_parameter_parsing import BaseParameterTestCase
class SelectToolParameterTestCase( BaseParameterTestCase ):
def test_dep_dummy_datasets_need_late_validation( self ):
def test_validated_values( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
assert self.param.need_late_validation( self.trans, { "input_bam": basic.DummyDataset() } )
try:
self.param.from_html("42", self.trans, { "input_bam": model.HistoryDatasetAssociation() })
except ValueError, err:
assert str(err) == "An invalid option was selected for my_name, '42', please verify."
return
assert False
def test_dep_runtime_values_need_late_validation( self ):
def test_validated_values_missing_dependency( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
assert self.param.need_late_validation( self.trans, { "input_bam": basic.RuntimeValue() } )
try:
self.param.from_html("42", self.trans)
except AssertionError, err:
assert str(err) == "Required dependency 'input_bam' not found in incoming values"
return
assert False
def test_dep_unvalidated_values_need_late_validation( self ):
def test_unvalidated_values( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
assert self.param.need_late_validation( self.trans, { "input_bam": basic.UnvalidatedValue( "42" ) } )
self.trans.workflow_building_mode = True
assert self.param.from_html("42", self.trans).value == "42"
def test_dep_real_datasets_no_late_validation( self ):
def test_validated_datasets( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
assert not self.param.need_late_validation( self.trans, { "input_bam": model.HistoryDatasetAssociation() } )
try:
self.param.from_html( model.HistoryDatasetAssociation(), self.trans, { "input_bam": basic.RuntimeValue() } )
except ValueError, err:
assert str(err) == "Parameter my_name requires a value, but has no legal values defined."
return
assert False
def test_nested_context_validation_needed( self ):
def test_unvalidated_datasets( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
# Data ref currently must be same level, if not at top level.
assert self.param.need_late_validation( self.trans, { "reference_source": { "my_name": "42", "input_bam": basic.RuntimeValue() } } )
def test_nested_context_validation_not_needed( self ):
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
# Data ref currently must be same level, if not at top level.
assert not self.param.need_late_validation( self.trans, { "reference_source": { "my_name": "42", "input_bam": model.HistoryDatasetAssociation() } } )
self.trans.workflow_building_mode = True
assert isinstance( self.param.from_html( model.HistoryDatasetAssociation(), self.trans, { "input_bam": basic.RuntimeValue() } ).value, model.HistoryDatasetAssociation )
def test_filter_param_value( self ):
self.options_xml = '''<options from_data_table="test_table"><filter type="param_value" ref="input_bam" column="0" /></options>'''