0001-forms-add-support-for-_live-subvariables-in-cascaded.patch
tests/form_pages/test_computed_field.py | ||
---|---|---|
623 | 623 |
freeze_on_initial_value=True, |
624 | 624 |
data_source=ds, |
625 | 625 |
), |
626 |
fields.CommentField(id='2', label='X{{ form_var_computed_live_var_name }}Y', type='comment'), |
|
626 |
fields.ComputedField( |
|
627 |
id='2', label='computed2', varname='b', value_template='B{{form_var_computed_live_var_name}}B' |
|
628 |
), |
|
629 |
fields.CommentField(id='3', label='X{{ form_var_computed_live_var_name }}Y', type='comment'), |
|
630 |
fields.CommentField(id='4', label='X{{ form_var_b }}Y', type='comment'), |
|
627 | 631 |
] |
628 | 632 |
formdef.store() |
629 | 633 |
formdef.data_class().wipe() |
630 | 634 | |
631 | 635 |
resp = get_app(pub).get('/test/?param=%s' % carddata.id) |
632 | 636 |
assert 'XbazY' in resp.text |
637 |
assert 'XBbazBY' in resp.text |
|
633 | 638 | |
634 | 639 |
resp = get_app(pub).get('/test/?param=%s' % 'invalid') |
635 | 640 |
assert 'XY' in resp.text |
641 |
assert 'XBBY' in resp.text |
wcs/forms/root.py | ||
---|---|---|
646 | 646 |
# create a temporary map using form variable names, to be used as context |
647 | 647 |
# variables during evaluation (via temporary_feed below), so we can have |
648 | 648 |
# computed fields depending on previously computed fields from the same page. |
649 |
from wcs.variables import LazyFieldVarComputed |
|
650 | ||
649 | 651 |
mapped_computed_values = {} |
650 | 652 |
for field in fields: |
651 | 653 |
if field.id in computed_values: |
652 |
mapped_computed_values['form_var_%s' % field.varname] = computed_values[field.id] |
|
654 |
mapped_computed_values['form_var_%s' % field.varname] = LazyFieldVarComputed( |
|
655 |
{str(field.id): computed_values[field.id]}, field=field |
|
656 |
) |
|
653 | 657 | |
654 | 658 |
with get_publisher().substitutions.temporary_feed(mapped_computed_values, force_mode='lazy'): |
655 | 659 |
for field in fields: |
... | ... | |
666 | 670 |
else: |
667 | 671 |
value = get_publisher().get_cached_complex_data(value) |
668 | 672 |
computed_values[field.id] = value |
669 |
mapped_computed_values['form_var_%s' % field.varname] = value |
|
673 |
mapped_computed_values['form_var_%s' % field.varname] = LazyFieldVarComputed( |
|
674 |
{str(field.id): computed_values[field.id]}, field=field |
|
675 |
) |
|
670 | 676 |
get_publisher().substitutions.invalidate_cache() |
671 | 677 | |
672 | 678 |
return computed_values |
673 |
- |