From 8524135d23d77e5d1b3482dc96d49a3fddcd0004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 5 Jun 2015 11:39:09 +0200 Subject: [PATCH 2/2] general: expose structured data in substitution variables (#7472) --- wcs/formdata.py | 7 +++++++ wcs/formdef.py | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/wcs/formdata.py b/wcs/formdata.py index 0e5d613..70c21f2 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -69,6 +69,13 @@ def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): formdata.get_url(), field.id) elif raw_value: new_data['var_%s_raw' % field.varname] = raw_value + if field.store_structured_value: + structured_value = data.get('%s_structured' % field.id) + if structured_value: + for k, v in structured_value.items(): + if k in ('id', 'text'): + continue + new_data['var_%s_%s' % (field.varname, k)] = v return new_data def flatten_dict(d): diff --git a/wcs/formdef.py b/wcs/formdef.py index 788368f..051a679 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -299,7 +299,12 @@ class FormDef(StorableObject): for field in self.workflow.variables_formdef.fields: if not field.varname: continue - variables['form_option_' + field.varname] = self.workflow_options.get(field.varname) + option_name = 'form_option_' + field.varname + variables[option_name] = self.workflow_options.get(field.varname) + if field.store_structured_value: + if '%s_structured' % field.varname in self.workflow_options: + variables[option_name + '_structured'] = self.workflow_options.get( + '%s_structured' % field.varname) return variables def get_variable_options_for_form(self): @@ -321,6 +326,10 @@ class FormDef(StorableObject): if not field.varname: continue variables[field.varname] = data.get(field.id) + if field.store_display_value: + variables[field.varname + '_display'] = data.get(field.id + '_display') + if field.store_structured_value: + variables[field.varname + '_structured'] = data.get(field.id + '_structured') if not self.workflow_options: self.workflow_options = {} self.workflow_options.update(variables) -- 2.1.4