0001-misc-add-parent-variable-to-lazy-formdata-39803.patch
tests/test_formdata.py | ||
---|---|---|
1867 | 1867 |
assert formdef.data_class().get(formdata.id).user_id is None |
1868 | 1868 |
assert formdef.data_class().get(formdata.id).user_label == 'blah xxx' |
1869 | 1869 |
assert formdef.data_class().get(formdata.id).get_user_label() == 'blah xxx' |
1870 | ||
1871 | ||
1872 |
def test_form_parent(pub): |
|
1873 |
formdef = FormDef() |
|
1874 |
formdef.name = 'foobar' |
|
1875 |
formdef.fields = [fields.StringField(id='0', label='foo', varname='foo')] |
|
1876 |
formdef.store() |
|
1877 | ||
1878 |
parent = formdef.data_class()() |
|
1879 |
parent.data = {'0': 'hello'} |
|
1880 |
parent.store() |
|
1881 | ||
1882 |
child = formdef.data_class()() |
|
1883 |
child.data = {'0': 'world'} |
|
1884 |
child.submission_context = { |
|
1885 |
'orig_formdef_id': formdef.id, |
|
1886 |
'orig_formdata_id': parent.id, |
|
1887 |
} |
|
1888 |
variables = parent.get_substitution_variables() |
|
1889 |
assert variables.get('form_var_foo') == 'hello' |
|
1890 |
assert variables.get('form_parent') is None |
|
1891 | ||
1892 |
assert str(variables['form'].var.foo) == 'hello' |
|
1893 |
assert variables['form'].parent is None |
|
1894 | ||
1895 |
variables = child.get_substitution_variables() |
|
1896 |
assert variables.get('form_var_foo') == 'world' |
|
1897 |
assert variables.get('form_parent_form_var_foo') == 'hello' |
|
1898 |
assert variables.get('form_parent') is not None |
|
1899 | ||
1900 |
assert str(variables['form'].var.foo) == 'world' |
|
1901 |
assert str(variables['form'].parent['form'].var.foo) == 'hello' |
|
1902 |
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): |
... | ... | |
438 | 440 | |
439 | 441 |
return LazyFormDataLinks(self._formdata) |
440 | 442 | |
443 |
@property |
|
444 |
def parent(self): |
|
445 |
if not self._formdata.submission_context: |
|
446 |
return None |
|
447 |
if 'orig_formdef_id' not in self._formdata.submission_context: |
|
448 |
return None |
|
449 |
if 'orig_formdata_id' not in self._formdata.submission_context: |
|
450 |
return None |
|
451 |
formdef = FormDef.get(self._formdata.submission_context['orig_formdef_id'], ignore_errors=True) |
|
452 |
if formdef is None: |
|
453 |
return None |
|
454 |
formdata = formdef.data_class().get(self._formdata.submission_context['orig_formdata_id'], ignore_errors=True) |
|
455 |
if formdata is None: |
|
456 |
return None |
|
457 |
return formdata.get_substitution_variables() |
|
458 | ||
441 | 459 |
def export_to_json(self, include_files=True): |
442 | 460 |
# this gets used to generate an email attachment :/ |
443 | 461 |
return self._formdata.export_to_json(include_files=include_files) |
444 |
- |