From ebccf230341b198f221154450d6b737d6bf5943c Mon Sep 17 00:00:00 2001 From: Daniel Blankenberg Date: Fri, 6 Feb 2009 13:32:44 -0500 Subject: [PATCH] Have DataMetaFilter in dynamic_options.py return a list of UnvalidatedValues when the referenced metadata value is not set. --- lib/galaxy/tools/parameters/basic.py | 9 ++++++++- lib/galaxy/tools/parameters/dynamic_options.py | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index 7f340f42fec..10145453461 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -485,8 +485,12 @@ class SelectToolParameter( ToolParameter ): else: return self.static_options def get_legal_values( self, trans, other_values ): + def _get_UnvalidatedValue_value( value ): + if isinstance( value, UnvalidatedValue ): + return value.value + return value if self.options: - return set( v for _, v, _ in self.options.get_options( trans, other_values ) ) + return map( _get_UnvalidatedValue_value, set( v for _, v, _ in self.options.get_options( trans, other_values ) ) ) elif self.dynamic_options: return set( v for _, v, _ in eval( self.dynamic_options, self.tool.code_namespace, other_values ) ) else: @@ -511,6 +515,9 @@ class SelectToolParameter( ToolParameter ): field = form_builder.SelectField( self.name, self.multiple, self.display, self.refresh_on_change ) options = self.get_options( trans, other_values ) for text, optval, selected in options: + if isinstance( optval, UnvalidatedValue ): + optval = optval.value + text = "%s (unvalidated)" % text if value: selected = ( optval in value ) field.add_option( text, optval, selected ) diff --git a/lib/galaxy/tools/parameters/dynamic_options.py b/lib/galaxy/tools/parameters/dynamic_options.py index 328e01c7327..83e7c933a35 100644 --- a/lib/galaxy/tools/parameters/dynamic_options.py +++ b/lib/galaxy/tools/parameters/dynamic_options.py @@ -108,7 +108,8 @@ class DataMetaFilter( Filter ): if not isinstance( ref, self.dynamic_option.tool_param.tool.app.model.HistoryDatasetAssociation ): return [] #not a valid dataset meta_value = ref.metadata.get( self.key, None ) - assert meta_value is not None, "Required metadata value '%s' not found in referenced dataset" % self.key + if meta_value is None: #assert meta_value is not None, "Required metadata value '%s' not found in referenced dataset" % self.key + return [ ( disp_name, basic.UnvalidatedValue( optval ), selected ) for disp_name, optval, selected in options ] if self.column is not None: rval = []