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