From ce6b45613df0c19175b5104c0996e20ef42e671f Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 3 Mar 2015 20:27:15 -0500 Subject: [PATCH 01/88] Add argument to tool parameters. - Expose via the API to help command-line construction. - Default the name of a parameter to be this (minus dashes) if name is not otherwise found. --- lib/galaxy/tools/parameters/basic.py | 20 +++++++++++++++----- test/api/test_tools.py | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 888019d0346..4213c528a3c 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -37,14 +37,15 @@ class ToolParameter( object, Dictifiable ): moment but in the future should encapsulate more complex parameters (lists of valid choices, validation logic, ...) """ - dict_collection_visible_keys = ( 'name', 'type', 'label', 'help' ) + dict_collection_visible_keys = ( 'name', 'argument', 'type', 'label', 'help' ) def __init__( self, tool, input_source, context=None ): input_source = ensure_input_source(input_source) self.tool = tool self.refresh_on_change = False self.refresh_on_change_values = [] - self.name = input_source.get("name") + self.argument = input_source.get("argument") + self.name = ToolParameter.parse_name( input_source ) self.type = input_source.get("type") self.hidden = input_source.get("hidden", False) self.is_dynamic = False @@ -224,9 +225,7 @@ class ToolParameter( object, Dictifiable ): @classmethod def build( cls, tool, param ): """Factory method to create parameter of correct type""" - param_name = param.get( "name" ) - if not param_name: - raise ValueError( "Tool parameter '%s' requires a 'name'" % (param_name ) ) + param_name = cls.parse_name( param ) param_type = param.get("type") if not param_type: raise ValueError( "Tool parameter '%s' requires a 'type'" % ( param_name ) ) @@ -235,6 +234,17 @@ class ToolParameter( object, Dictifiable ): else: return parameter_types[param_type]( tool, param ) + @classmethod + def parse_name(cls, input_source): + name = input_source.get("name", None) + if name is None: + argument = input_source.get("argument") + if argument: + name = argument.lstrip("-") + else: + raise ValueError("Tool parameter must specify a name.") + return name + class TextToolParameter( ToolParameter ): """ diff --git a/test/api/test_tools.py b/test/api/test_tools.py index e1b5485ce5b..cecf7e763ca 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -58,7 +58,7 @@ class ToolsTestCase( api.ApiTestCase ): self._assert_has_keys( case2, "value", "inputs" ) case2_inputs = case2[ "inputs" ] assert len( case2_inputs ) == 1 - self._assert_has_keys( case2_inputs[ 0 ], 'name', 'type', 'label', 'help' ) + self._assert_has_keys( case2_inputs[ 0 ], 'name', 'type', 'label', 'help', 'argument' ) assert case2_inputs[ 0 ][ "name" ] == "seed" def _show_valid_tool( self, tool_id ): From f1c036e746fcd746842b6174e3a7927649b6e1a1 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 23 Mar 2015 15:31:23 -0400 Subject: [PATCH 02/88] ToolForm: Add section tag --- client/galaxy/scripts/mvc/form/form-data.js | 7 +- lib/galaxy/tools/__init__.py | 46 +- lib/galaxy/tools/parameters/grouping.py | 54 +++ static/maps/mvc/form/form-data.js.map | 2 +- static/scripts/mvc/form/form-data.js | 2 +- templates/webapps/galaxy/tool_form.mako | 469 +------------------- 6 files changed, 124 insertions(+), 456 deletions(-) diff --git a/client/galaxy/scripts/mvc/form/form-data.js b/client/galaxy/scripts/mvc/form/form-data.js index 5e1f23ce1fb..0562d97fbf9 100644 --- a/client/galaxy/scripts/mvc/form/form-data.js +++ b/client/galaxy/scripts/mvc/form/form-data.js @@ -96,9 +96,9 @@ return Backbone.Model.extend({ convert(job_input_id, head[input.id + '-section-' + selectedCase]); } break; - // handle custom sub sections + // handle sections case 'section': - convert('', node); + convert(job_input_id, node); break; default: // get field @@ -191,6 +191,9 @@ return Backbone.Model.extend({ search (index, node.cases[selectedCase].inputs); } break; + case 'section': + search (index, node.inputs); + break; default: var input_id = self.map_dict[index]; if (input_id) { diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index dd50e17e2ae..448c4a2b4ca 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -40,7 +40,7 @@ from galaxy.tools.parameters.basic import (BaseURLToolParameter, DataToolParameter, DataCollectionToolParameter, HiddenToolParameter, LibraryDatasetToolParameter, SelectToolParameter, ToolParameter, UnvalidatedValue, IntegerToolParameter, FloatToolParameter) -from galaxy.tools.parameters.grouping import Conditional, ConditionalWhen, Repeat, UploadDataset +from galaxy.tools.parameters.grouping import Conditional, ConditionalWhen, Repeat, Section, UploadDataset from galaxy.tools.parameters.input_translation import ToolInputTranslator from galaxy.tools.parameters.output import ToolOutputActionGroup from galaxy.tools.parameters.validation import LateValidationError @@ -972,6 +972,14 @@ class Tool( object, Dictifiable ): case.inputs = odict() group.cases.append( case ) rval[group.name] = group + elif input_type == "section": + group = Section() + group.name = input_source.get( "name" ) + group.title = input_source.get( "title" ) + group.help = input_source.get( "help", None ) + page_source = input_source.parse_nested_inputs_source() + group.inputs = self.parse_input_elem( page_source, enctypes, context ) + rval[group.name] = group elif input_type == "upload_dataset": elem = input_source.elem() group = UploadDataset() @@ -1505,6 +1513,20 @@ class Tool( object, Dictifiable ): group_state['__current_case__'] = current_case # Store the value of the test element group_state[ input.test_param.name ] = value + elif isinstance( input, Section ): + group_state = state[input.name] + group_prefix = "%s|" % ( key ) + self.fill_in_new_state( trans, input.inputs, group_state, context, history=history ) + group_errors = self.populate_state( trans, + input.inputs, + group_state, + incoming, + history, + source, + prefix=group_prefix, + context=context ) + if group_errors: + errors[ input.name ] = group_errors elif isinstance( input, UploadDataset ): group_state = state[input.name] group_errors = [] @@ -1714,6 +1736,22 @@ class Tool( object, Dictifiable ): group_state['__current_case__'] = current_case # Store the value of the test element group_state[ input.test_param.name ] = value + elif isinstance( input, Section ): + group_state = state[input.name] + group_old_errors = old_errors.get( input.name, {} ) + group_prefix = "%s|" % ( key ) + group_errors = self.update_state( trans, + input.inputs, + group_state, + incoming, + prefix=group_prefix, + context=context, + source=source, + update_only=update_only, + old_errors=group_old_errors, + item_callback=item_callback ) + if group_errors: + errors[ input.name ] = group_errors elif isinstance( input, UploadDataset ): group_state = state[input.name] group_errors = [] @@ -2416,6 +2454,10 @@ class Tool( object, Dictifiable ): errors[test_param_key] = 'The selected case is unavailable/invalid.' pass group_state[input.test_param.name] = value + elif input.type == 'section': + group_state = state[input.name] + group_prefix = "%s|" % ( key ) + populate_state(trans, input.inputs, group_state, errors, incoming, prefix=group_prefix, context=context) else: default_value = incoming.get(key, state.get(input.name, None)) value, error = check_state(trans, input, default_value, context) @@ -2448,6 +2490,8 @@ class Tool( object, Dictifiable ): if '__current_case__' in group_state: i = group_state['__current_case__'] iterate(tool_dict['cases'][i]['inputs'], input.cases[i].inputs, group_state, other_values) + 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 try: diff --git a/lib/galaxy/tools/parameters/grouping.py b/lib/galaxy/tools/parameters/grouping.py index 30b9dfa6c4c..5a1706579b0 100644 --- a/lib/galaxy/tools/parameters/grouping.py +++ b/lib/galaxy/tools/parameters/grouping.py @@ -129,6 +129,60 @@ class Repeat( Group ): repeat_dict[ "inputs" ] = map( input_to_dict, self.inputs.values() ) return repeat_dict +class Section( Group ): + + dict_collection_visible_keys = ( 'name', 'type', 'title', 'help') + + type = "section" + def __init__( self ): + Group.__init__( self ) + self.title = None + self.inputs = None + self.help = None + @property + def title_plural( self ): + return inflector.pluralize( self.title ) + def label( self ): + return "Section (%s)" % self.title + def value_to_basic( self, value, app ): + rval = {} + for input in self.inputs.itervalues(): + rval[ input.name ] = input.value_to_basic( value[input.name], app ) + return rval + def value_from_basic( self, value, app, ignore_errors=False ): + rval = [] + try: + for i, d in enumerate( value ): + rval_dict = {} + for input in self.inputs.itervalues(): + if ignore_errors and input.name not in d: + pass + else: + rval_dict[ input.name ] = input.value_from_basic( d[input.name], app, ignore_errors ) + rval.append( rval_dict ) + except Exception, e: + if not ignore_errors: + raise e + return rval + def visit_inputs( self, prefix, value, callback ): + for i, d in enumerate( value ): + for input in self.inputs.itervalues(): + new_prefix = prefix + "%s_%d|" % ( self.name, i ) + if isinstance( input, ToolParameter ): + callback( new_prefix, input, d[input.name], parent = d ) + else: + input.visit_inputs( new_prefix, d[input.name], callback ) + def get_initial_value( self, trans, context, history=None ): + rval = {} + for input in self.inputs.itervalues(): + rval[ input.name ] = input.get_initial_value( trans, context, history=history ) + return rval + def to_dict( self, trans, view='collection', value_mapper=None ): + section_dict = super( Section, self ).to_dict( trans, view=view, value_mapper=value_mapper ) + def input_to_dict( input ): + return input.to_dict( trans, view=view, value_mapper=value_mapper ) + section_dict[ "inputs" ] = map( input_to_dict, self.inputs.values() ) + return section_dict class UploadDataset( Group ): type = "upload_dataset" diff --git a/static/maps/mvc/form/form-data.js.map b/static/maps/mvc/form/form-data.js.map index 84e2565dde4..7522cbb5ded 100644 --- a/static/maps/mvc/form/form-data.js.map +++ b/static/maps/mvc/form/form-data.js.map @@ -1 +1 @@ -{"version":3,"file":"form-data.js","sources":["../../../src/mvc/form/form-data.js"],"names":["define","Backbone","Model","extend","initialize","app","this","checksum","sum","i","field_list","field","JSON","stringify","value","create","add","job_input_id","input_id","input_value","self","map_dict","result_dict","convert","identifier","head","index","node","input","name","type","section_label","block_indices","block_prefix","block_label","pos","indexOf","length","push","parseInt","substr","sort","a","b","id","test_param","selectedCase","matchCase","undefined","ignore","payload","p_id","dict","_iterate","section","$el","match","truevalue","falsevalue","cases","matchModel","model","callback","search","j","cache","inputs","result","matchResponse","response","new_id","separator","Array","parent","children","$","each","child","attr","hasClass","input_list"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"form-data.js","sources":["../../../src/mvc/form/form-data.js"],"names":["define","Backbone","Model","extend","initialize","app","this","checksum","sum","i","field_list","field","JSON","stringify","value","create","add","job_input_id","input_id","input_value","self","map_dict","result_dict","convert","identifier","head","index","node","input","name","type","section_label","block_indices","block_prefix","block_label","pos","indexOf","length","push","parseInt","substr","sort","a","b","id","test_param","selectedCase","matchCase","undefined","ignore","payload","p_id","dict","_iterate","section","$el","match","truevalue","falsevalue","cases","matchModel","model","callback","search","j","cache","inputs","result","matchResponse","response","new_id","separator","Array","parent","children","$","each","child","attr","hasClass","input_list"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/mvc/form/form-data.js b/static/scripts/mvc/form/form-data.js index 79473f6f824..3e74c8c30a6 100644 --- a/static/scripts/mvc/form/form-data.js +++ b/static/scripts/mvc/form/form-data.js @@ -1,2 +1,2 @@ -define(["utils/utils"],function(){return Backbone.Model.extend({initialize:function(a){this.app=a},checksum:function(){var a="";for(var b in this.app.field_list){var c=this.app.field_list[b];a+=JSON.stringify(c.value&&c.value())}return a},create:function(){function a(a,b,d){c.map_dict[a]=b,e[a]=d}function b(d,e){for(var f in e){var g=e[f];if(g.input){var h=g.input,i=d;switch(""!=d&&(i+="|"),i+=h.name,h.type){case"repeat":var j="section-",k=[],l=null;for(var m in g){var n=m.indexOf(j);-1!=n&&(n+=j.length,k.push(parseInt(m.substr(n))),l||(l=m.substr(0,n)))}k.sort(function(a,b){return a-b});var f=0;for(var o in k)b(i+"_"+f++,g[l+k[o]]);break;case"conditional":var p=c.app.field_list[h.id].value();a(i+"|"+h.test_param.name,h.id,p);var q=c.matchCase(h,p);-1!=q&&b(i,e[h.id+"-section-"+q]);break;case"section":b("",g);break;default:var r=c.app.field_list[h.id];if(r&&r.value){var p=r.value();if((void 0===h.ignore||h.ignore!=p)&&(a(i,h.id,p),h.payload))for(var s in h.payload)a(s,h.id,h.payload[s])}}}}}var c=this,d={};this._iterate(this.app.section.$el,d);var e={};return this.map_dict={},b("",d),e},match:function(a){return this.map_dict&&this.map_dict[a]},matchCase:function(a,b){"boolean"==a.test_param.type&&(b="true"==b?a.test_param.truevalue||"true":a.test_param.falsevalue||"false");for(var c in a.cases)if(a.cases[c].value==b)return c;return-1},matchModel:function(a,b){function c(a,d){for(var f in d){var g=d[f],h=g.name;switch(""!=a&&(h=a+"|"+h),g.type){case"repeat":for(var i in g.cache)c(h+"_"+i,g.cache[i]);break;case"conditional":var j=g.test_param&&g.test_param.value,k=e.matchCase(g,j);-1!=k&&c(h,g.cases[k].inputs);break;default:var l=e.map_dict[h];l&&b(l,g)}}}var d={},e=this;return c("",a.inputs),d},matchResponse:function(a){function b(a,e){if("string"==typeof e){var f=d.map_dict[a];f&&(c[f]=e)}else for(var g in e){var h=g;if(""!==a){var i="|";e instanceof Array&&(i="_"),h=a+i+h}b(h,e[g])}}var c={},d=this;return b("",a),c},_iterate:function(a,b){var c=this,d=$(a).children();d.each(function(){var a=this,d=$(a).attr("id");if($(a).hasClass("section-row")){b[d]={};var e=c.app.input_list[d];e&&(b[d]={input:e}),c._iterate(a,b[d])}else c._iterate(a,b)})}})}); +define(["utils/utils"],function(){return Backbone.Model.extend({initialize:function(a){this.app=a},checksum:function(){var a="";for(var b in this.app.field_list){var c=this.app.field_list[b];a+=JSON.stringify(c.value&&c.value())}return a},create:function(){function a(a,b,d){c.map_dict[a]=b,e[a]=d}function b(d,e){for(var f in e){var g=e[f];if(g.input){var h=g.input,i=d;switch(""!=d&&(i+="|"),i+=h.name,h.type){case"repeat":var j="section-",k=[],l=null;for(var m in g){var n=m.indexOf(j);-1!=n&&(n+=j.length,k.push(parseInt(m.substr(n))),l||(l=m.substr(0,n)))}k.sort(function(a,b){return a-b});var f=0;for(var o in k)b(i+"_"+f++,g[l+k[o]]);break;case"conditional":var p=c.app.field_list[h.id].value();a(i+"|"+h.test_param.name,h.id,p);var q=c.matchCase(h,p);-1!=q&&b(i,e[h.id+"-section-"+q]);break;case"section":b(i,g);break;default:var r=c.app.field_list[h.id];if(r&&r.value){var p=r.value();if((void 0===h.ignore||h.ignore!=p)&&(a(i,h.id,p),h.payload))for(var s in h.payload)a(s,h.id,h.payload[s])}}}}}var c=this,d={};this._iterate(this.app.section.$el,d);var e={};return this.map_dict={},b("",d),e},match:function(a){return this.map_dict&&this.map_dict[a]},matchCase:function(a,b){"boolean"==a.test_param.type&&(b="true"==b?a.test_param.truevalue||"true":a.test_param.falsevalue||"false");for(var c in a.cases)if(a.cases[c].value==b)return c;return-1},matchModel:function(a,b){function c(a,d){for(var f in d){var g=d[f],h=g.name;switch(""!=a&&(h=a+"|"+h),g.type){case"repeat":for(var i in g.cache)c(h+"_"+i,g.cache[i]);break;case"conditional":var j=g.test_param&&g.test_param.value,k=e.matchCase(g,j);-1!=k&&c(h,g.cases[k].inputs);break;case"section":c(h,g.inputs);break;default:var l=e.map_dict[h];l&&b(l,g)}}}var d={},e=this;return c("",a.inputs),d},matchResponse:function(a){function b(a,e){if("string"==typeof e){var f=d.map_dict[a];f&&(c[f]=e)}else for(var g in e){var h=g;if(""!==a){var i="|";e instanceof Array&&(i="_"),h=a+i+h}b(h,e[g])}}var c={},d=this;return b("",a),c},_iterate:function(a,b){var c=this,d=$(a).children();d.each(function(){var a=this,d=$(a).attr("id");if($(a).hasClass("section-row")){b[d]={};var e=c.app.input_list[d];e&&(b[d]={input:e}),c._iterate(a,b[d])}else c._iterate(a,b)})}})}); //# sourceMappingURL=../../../maps/mvc/form/form-data.js.map \ No newline at end of file diff --git a/templates/webapps/galaxy/tool_form.mako b/templates/webapps/galaxy/tool_form.mako index 9f7d986b62e..69e173f9acf 100644 --- a/templates/webapps/galaxy/tool_form.mako +++ b/templates/webapps/galaxy/tool_form.mako @@ -3,455 +3,22 @@ ${h.js("libs/bibtex", "libs/jquery/jquery-ui")} ${h.css('base', 'jquery-ui/smoothness/jquery-ui')} -## skip new tool form code if disabled -%if util.string_as_bool(trans.app.config.get('toolform_upgrade', True)): - <% - ## TEMPORARY: create tool dictionary in mako while both tool forms are in use. - ## This avoids making two separate requests since the classic form requires the mako anyway. - params = dict(trans.request.params) - params['__dataset_id__'] = params.get('id', None) - self.form_config = tool.to_json(trans, params) - self.form_config.update({ - 'id' : tool.id, - 'job_id' : trans.security.encode_id( job.id ) if job else None, - 'history_id' : trans.security.encode_id( trans.history.id ) - }) - %> - -