0001-fields-make-live-values-available-as-form_var_xxx-in.patch
help/fr/form-multipages.page | ||
---|---|---|
64 | 64 |
<code>mode_de_transport</code>, la page sur l'accès au parking ne devrait |
65 | 65 |
pas être affichée pour les personnes ayant précisés qu'elles venaient à |
66 | 66 |
pieds, le champ serait complété avec l'expression suivante : |
67 |
<code>var_mode_de_transport != "Piéton"</code> (où le <code>!=</code> |
|
67 |
<code>form_var_mode_de_transport != "Piéton"</code> (où le <code>!=</code>
|
|
68 | 68 |
correspond à la syntaxe Python signifiant « différent de »). |
69 | 69 |
</p> |
70 | 70 |
tests/test_form_pages.py | ||
---|---|---|
258 | 258 |
assert '3rd page' in resp.body |
259 | 259 |
assert '<li class="current"><span>3rd page</span>' in resp.body |
260 | 260 | |
261 |
def test_form_multi_page_condition_select_new_varname(pub): |
|
262 |
formdef = create_formdef() |
|
263 |
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'), |
|
264 |
fields.ItemField(id='1', label='select', type='item', |
|
265 |
required=True, |
|
266 |
varname='foo', items=['Foo', 'Bar']), |
|
267 |
fields.PageField(id='2', label='2nd page', type='page', |
|
268 |
condition='form_var_foo == "Foo"'), |
|
269 |
fields.PageField(id='3', label='3rd page', type='page', |
|
270 |
condition='form_var_foo == "Bar"'), |
|
271 |
fields.StringField(id='3', label='string 2')] |
|
272 |
formdef.store() |
|
273 |
formdef.data_class().wipe() |
|
274 |
resp = get_app(pub).get('/test/') |
|
275 |
assert not '2nd page' in resp.body |
|
276 |
assert not '3rd page' in resp.body |
|
277 |
resp.forms[0]['f1'] = 'Foo' |
|
278 |
resp = resp.forms[0].submit('submit') |
|
279 |
assert '2nd page' in resp.body |
|
280 |
assert not '3rd page' in resp.body |
|
281 |
assert '<li class="current"><span>2nd page</span>' in resp.body |
|
282 | ||
283 |
resp = get_app(pub).get('/test/') |
|
284 |
resp.forms[0]['f1'] = 'Bar' |
|
285 |
resp = resp.forms[0].submit('submit') |
|
286 |
assert not '2nd page' in resp.body |
|
287 |
assert '3rd page' in resp.body |
|
288 |
assert '<li class="current"><span>3rd page</span>' in resp.body |
|
289 | ||
290 | ||
261 | 291 |
def test_form_submit_with_user(pub): |
262 | 292 |
create_user(pub) |
263 | 293 |
formdef = create_formdef() |
wcs/fields.py | ||
---|---|---|
1172 | 1172 |
return True |
1173 | 1173 | |
1174 | 1174 |
from formdata import get_dict_with_varnames |
1175 |
data = get_dict_with_varnames(formdef.fields, dict) |
|
1176 |
data.update(get_publisher().substitutions.get_context_variables()) |
|
1175 |
data = get_publisher().substitutions.get_context_variables() |
|
1176 | ||
1177 |
# create variables with values currently being evaluated, not yet |
|
1178 |
# available in the formdata |
|
1179 |
dict_with_varnames = get_dict_with_varnames(formdef.fields, dict) |
|
1180 |
# add them as var_xxx for compatibility |
|
1181 |
data.update(dict_with_varnames) |
|
1182 |
# and add them as form_var_xxx, overriding context variables with their |
|
1183 |
# "live" value |
|
1184 |
for k, v in dict_with_varnames.items(): |
|
1185 |
data['form_' + k] = v |
|
1177 | 1186 | |
1178 | 1187 |
try: |
1179 | 1188 |
if eval(self.condition, get_publisher().get_global_eval_dict(), data): |
1180 |
- |