Sanitization now occurs as part of the InputValueWrapper logic. Previously sanitization occurred as soon as parameter values were provided by the user via form submits, causing the sanitized values to be stored in the database. Now the original user specified values are stored in the database and sanitation happens when str is called on the InputValueWrapper, i.e. during command-line generation and when generating configfiles.
Abstract out param name and value translations that are performed on data source tools. This changes some of the names of the tags used for these purposes (e.g. data_type_translation becomes value_translation) to reflect this generalization. The ToolConfigSyntax wiki page has been updated with these changes.
Future Enhancement:
Allow methods with arguments and keywords to be specified for sanitation and translation purposes.
- Dependencies between parameters and refresh_on_change are now more general.
Any parameter can assert a dependency on any other parameter by name, and
if a parameter has dependencies it will cause a refresh.
- Use "other_values" to get at the value of the associated dataset rather
than trying to look at the tool. This means that column lists now work
inside grouping constructs.
- Eliminated tool.updated_params and use of self.legal_values. These
variables are GLOBAL. Everybody using a tool has a reference to the same
instance of tool. Thus, if two people are using the same tool at once this
can cause serious problems.
#) An "xy_plot" tool and a new "build_ucsc_custom_track" tool that
demonstrate the various features added here.
#) Grouping constructs for tool parameters:
- "repeat" element allows for a set of parameters to be repeated an
arbitrary number of times
- "conditional" element allows choosing a set of parameters to display
based on the value of another parameter
These constructs can be arbitrarily nested. Their values are structured
and can be used in hooks, validation, et cetera
#) Support for generating arbitrary config files to pass to a tool
#) Command lines are now full Cheetah templates
#) Better job error reporting, includes tracebacks for internal errors
preparing the job (database change required, see below!)
#) Preparation of command line, config files, exec_before_job hook moved
into job execution stage
#) Parameter values now jsonified before storing in database (this is much
more rigorous that before, and restoring from the database now works
properly)
DATABASE CHANGE:
alter table job add column traceback text;