From e5b0b8057de3ac8715363c1540173a3e75624266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 10 Nov 2016 11:50:23 +0100 Subject: [PATCH] formdefs: provide both id and text for item fields in workflow options (#13921) --- tests/test_formdef.py | 12 +++++++++--- wcs/formdef.py | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/test_formdef.py b/tests/test_formdef.py index 3e635fa..428fdf2 100644 --- a/tests/test_formdef.py +++ b/tests/test_formdef.py @@ -12,7 +12,7 @@ from quixote import cleanup from wcs import formdef from wcs.formdef import FormDef from wcs.workflows import Workflow -from wcs.fields import StringField, FileField, DateField +from wcs.fields import StringField, FileField, DateField, ItemField from utilities import create_temporary_pub @@ -106,8 +106,10 @@ def test_substitution_variables(): from wcs.workflows import WorkflowVariablesFieldsFormDef wf = Workflow(name='variables') wf.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=wf) - wf.variables_formdef.fields.append( - StringField(label='Test', type='string', varname='foo')) + wf.variables_formdef.fields = [ + StringField(id='1', label='Test', type='string', varname='foo'), + ItemField(id='2', label='Test Liste', type='item', varname='bar'), + ] wf.store() formdef.workflow_id = wf.id @@ -117,6 +119,10 @@ def test_substitution_variables(): assert 'form_option_foo' in formdef.get_substitution_variables() assert formdef.get_substitution_variables()['form_option_foo'] == 'bar' + formdef.workflow_options = {'bar': 'bar', 'bar_display': 'Bar'} + assert formdef.get_substitution_variables()['form_option_bar'] == 'Bar' + assert formdef.get_substitution_variables()['form_option_bar_raw'] == 'bar' + def test_schema_with_date_variable(): FormDef.wipe() formdef = FormDef() diff --git a/wcs/formdef.py b/wcs/formdef.py index 3eac9e6..0ea9a32 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -372,6 +372,11 @@ class FormDef(StorableObject): continue option_name = 'form_option_' + field.varname variables[option_name] = self.workflow_options.get(field.varname) + if field.store_display_value: + if '%s_display' % field.varname in self.workflow_options: + variables[option_name + '_raw'] = variables[option_name] + variables[option_name] = self.workflow_options.get( + '%s_display' % field.varname) if field.store_structured_value: if '%s_structured' % field.varname in self.workflow_options: variables[option_name + '_structured'] = self.workflow_options.get( -- 2.10.2