misc: don't create subvariables for strings (#53641)

This commit is contained in:
Frédéric Péters 2021-05-01 00:06:11 +02:00
parent 4b802af856
commit 49d871a6b6
2 changed files with 27 additions and 1 deletions

View File

@ -5,6 +5,7 @@ from django.utils.timezone import make_aware
from wcs import fields
from wcs.formdef import FormDef
from wcs.qommon.substitution import CompatibilityNamesDict
from wcs.wscalls import NamedWsCall
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
@ -353,3 +354,28 @@ def test_computed_field_usage_in_live_data(pub, http_requests):
resp.form['f0'] = 'hello'
live_resp = app.post('/test/live', params=resp.form.submit_fields())
assert live_resp.json['result']['2']['content'] == '<p>XxxxYhelloZ</p>'
def test_computed_field_inspect_keys(pub):
create_user(pub)
FormDef.wipe()
formdef = FormDef()
formdef.name = 'test'
formdef.fields = [
fields.ComputedField(id='1', label='computed', varname='computed', value_template='{{ "xxx" }}'),
]
formdef.store()
formdef.data_class().wipe()
formdata = formdef.data_class()()
formdata.data = {'1': 'xxx'}
substvars = CompatibilityNamesDict()
substvars.update(formdata.get_substitution_variables())
assert 'form_var_computed' in substvars.get_flat_keys()
assert substvars['form_var_computed'] == 'xxx'
formdata.data = {'1': {'foo': 'bar'}}
assert 'form_var_computed_foo' in substvars.get_flat_keys()
assert substvars['form_var_computed_foo'] == 'bar'

View File

@ -800,7 +800,7 @@ class LazyFieldVarComplex(LazyFieldVar):
if isinstance(structured_value, list):
for i, value in enumerate(structured_value):
walk(str(i), value)
else:
elif isinstance(structured_value, dict):
walk('', structured_value)
return keys