0001-misc-add-parent-variable-to-lazy-formdata-39803.patch
tests/test_formdata.py | ||
---|---|---|
1790 | 1790 |
assert formdef.data_class().get(formdata.id).user_id is None |
1791 | 1791 |
assert formdef.data_class().get(formdata.id).user_label == 'blah xxx' |
1792 | 1792 |
assert formdef.data_class().get(formdata.id).get_user_label() == 'blah xxx' |
1793 | ||
1794 | ||
1795 |
def test_form_parent(pub): |
|
1796 |
formdef = FormDef() |
|
1797 |
formdef.name = 'foobar' |
|
1798 |
formdef.fields = [fields.StringField(id='0', label='foo', varname='foo')] |
|
1799 |
formdef.store() |
|
1800 | ||
1801 |
parent = formdef.data_class()() |
|
1802 |
parent.data = {'0': 'hello'} |
|
1803 |
parent.store() |
|
1804 | ||
1805 |
child = formdef.data_class()() |
|
1806 |
child.data = {'0': 'world'} |
|
1807 |
child.submission_context = { |
|
1808 |
'orig_formdef_id': formdef.id, |
|
1809 |
'orig_formdata_id': parent.id, |
|
1810 |
} |
|
1811 |
variables = parent.get_substitution_variables() |
|
1812 |
assert variables.get('form_var_foo') == 'hello' |
|
1813 |
assert variables.get('form_parent') is None |
|
1814 | ||
1815 |
assert str(variables['form'].var.foo) == 'hello' |
|
1816 |
assert variables['form'].parent is None |
|
1817 | ||
1818 |
variables = child.get_substitution_variables() |
|
1819 |
assert variables.get('form_var_foo') == 'world' |
|
1820 |
assert variables.get('form_parent_form_var_foo') == 'hello' |
|
1821 |
assert variables.get('form_parent') is not None |
|
1822 | ||
1823 |
assert str(variables['form'].var.foo) == 'world' |
|
1824 |
assert str(variables['form'].parent['form'].var.foo) == 'hello' |
|
1825 |
assert variables['form'].parent is not None |
wcs/variables.py | ||
---|---|---|
29 | 29 |
from .qommon.templatetags.qommon import parse_datetime |
30 | 30 |
from .qommon.storage import (Or, Equal, NotEqual) |
31 | 31 | |
32 |
from .formdef import FormDef |
|
33 | ||
32 | 34 | |
33 | 35 |
class LazyFormDefObjectsManager(object): |
34 | 36 |
def __init__(self, formdef, formdata=None, criterias=None, order_by=None): |
... | ... | |
421 | 423 | |
422 | 424 |
return LazyFormDataLinks(self._formdata) |
423 | 425 | |
426 |
@property |
|
427 |
def parent(self): |
|
428 |
if not self._formdata.submission_context: |
|
429 |
return None |
|
430 |
if 'orig_formdef_id' not in self._formdata.submission_context: |
|
431 |
return None |
|
432 |
if 'orig_formdata_id' not in self._formdata.submission_context: |
|
433 |
return None |
|
434 |
formdef = FormDef.get(self._formdata.submission_context['orig_formdef_id'], ignore_errors=True) |
|
435 |
if formdef is None: |
|
436 |
return None |
|
437 |
formdata = formdef.data_class().get(self._formdata.submission_context['orig_formdata_id'], ignore_errors=True) |
|
438 |
if formdata is None: |
|
439 |
return None |
|
440 |
return formdata.get_substitution_variables() |
|
441 | ||
424 | 442 |
def export_to_json(self, include_files=True): |
425 | 443 |
# this gets used to generate an email attachment :/ |
426 | 444 |
return self._formdata.export_to_json(include_files=include_files) |
427 |
- |