misc: don't expose extra keys with invalid format as variables (#53345)
This commit is contained in:
parent
e407a3c8af
commit
711cecc69a
|
@ -2635,8 +2635,8 @@ def test_lazy_structured_items(pub, variable_test_data):
|
||||||
'type': 'formula',
|
'type': 'formula',
|
||||||
'value': repr(
|
'value': repr(
|
||||||
[
|
[
|
||||||
{'id': '1', 'text': 'un', 'more': 'foo', 'url': 'xxx'},
|
{'id': '1', 'text': 'un', 'more': 'foo', 'url': 'xxx', 'invalid:key': 'xxx'},
|
||||||
{'id': '2', 'text': 'deux', 'more': 'bar', 'url': 'yyy'},
|
{'id': '2', 'text': 'deux', 'more': 'bar', 'url': 'yyy', 'invalid:key': 'yyy'},
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
@ -2680,14 +2680,16 @@ def test_lazy_structured_items(pub, variable_test_data):
|
||||||
tmpl = Template('{% for x in form_var_plop_structured %}{{x.more}}{% endfor %}')
|
tmpl = Template('{% for x in form_var_plop_structured %}{{x.more}}{% endfor %}')
|
||||||
assert tmpl.render(context) == 'foobar'
|
assert tmpl.render(context) == 'foobar'
|
||||||
|
|
||||||
assert 'form_var_plop_0_url' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
flat_keys = pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
||||||
assert 'form_var_plop_1_more' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop_0_url' in flat_keys
|
||||||
assert 'form_var_plop_structured' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop_1_more' in flat_keys
|
||||||
assert 'form_var_plop_raw' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop_structured' in flat_keys
|
||||||
|
assert 'form_var_plop_raw' in flat_keys
|
||||||
|
assert 'form_var_plop_0_invalid:key' not in flat_keys
|
||||||
|
|
||||||
assert 'form_var_plop2' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop2' in flat_keys
|
||||||
assert 'form_var_plop2_raw' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop2_raw' in flat_keys
|
||||||
assert 'form_var_plop2_structured' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
|
assert 'form_var_plop2_structured' in flat_keys
|
||||||
|
|
||||||
|
|
||||||
def test_formdata_user_field(pub, variable_test_data):
|
def test_formdata_user_field(pub, variable_test_data):
|
||||||
|
|
|
@ -804,7 +804,8 @@ class LazyFieldVarStructured(LazyFieldVar):
|
||||||
def walk(base, value):
|
def walk(base, value):
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
for k, v in value.items():
|
for k, v in value.items():
|
||||||
walk(k if not base else base + '_' + k, v)
|
if CompatibilityNamesDict.valid_key_regex.match(k):
|
||||||
|
walk(k if not base else base + '_' + k, v)
|
||||||
else:
|
else:
|
||||||
keys.append(base)
|
keys.append(base)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue