general: expose structured data in substitution variables (#7472)

This commit is contained in:
Frédéric Péters 2015-06-05 11:39:09 +02:00
parent be261fe9a5
commit 4d1119ca47
2 changed files with 17 additions and 1 deletions

View File

@ -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):

View File

@ -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)