16 |
16 |
from wcs.qommon.http_request import HTTPRequest
|
17 |
17 |
from wcs import fields, formdef
|
18 |
18 |
from wcs.blocks import BlockDef
|
|
19 |
from wcs.carddef import CardDef
|
19 |
20 |
from wcs.categories import Category
|
20 |
21 |
from wcs.conditions import Condition
|
21 |
22 |
from wcs.formdef import FormDef
|
... | ... | |
783 |
784 |
assert lazy_formdata.var.foo_foo == 'baz' # 2nd value
|
784 |
785 |
|
785 |
786 |
|
|
787 |
def test_lazy_formdata_live_item(pub):
|
|
788 |
CardDef.wipe()
|
|
789 |
carddef = CardDef()
|
|
790 |
carddef.name = 'items'
|
|
791 |
carddef.digest_template = '{{form_var_name}}'
|
|
792 |
carddef.fields = [
|
|
793 |
fields.StringField(id='0', label='string', varname='name'),
|
|
794 |
fields.StringField(id='1', label='string', varname='attr'),
|
|
795 |
]
|
|
796 |
carddef.store()
|
|
797 |
for i, value in enumerate(['foo', 'bar', 'baz']):
|
|
798 |
carddata = carddef.data_class()()
|
|
799 |
carddata.data = {
|
|
800 |
'0': value,
|
|
801 |
'1': 'attr%s' % i,
|
|
802 |
}
|
|
803 |
carddata.just_created()
|
|
804 |
carddata.store()
|
|
805 |
|
|
806 |
ds = {'type': 'carddef:%s' % carddef.url_name}
|
|
807 |
formdef = FormDef()
|
|
808 |
formdef.name = 'foobar'
|
|
809 |
formdef.fields = [fields.ItemField(id='0', label='string', type='item',
|
|
810 |
varname='foo', data_source=ds, display_disabled_items=True)]
|
|
811 |
formdef.store()
|
|
812 |
|
|
813 |
formdata = formdef.data_class()()
|
|
814 |
formdata.data = {
|
|
815 |
'0': str(carddata.id),
|
|
816 |
}
|
|
817 |
pub.substitutions.feed(pub)
|
|
818 |
pub.substitutions.feed(formdef)
|
|
819 |
pub.substitutions.feed(formdata)
|
|
820 |
|
|
821 |
context = pub.substitutions.get_context_variables(mode='lazy')
|
|
822 |
assert context['form_var_foo_live_name'] == 'baz'
|
|
823 |
assert context['form_var_foo_live_attr'] == 'attr2'
|
|
824 |
|
|
825 |
CardDef.wipe()
|
|
826 |
context = pub.substitutions.get_context_variables(mode='lazy')
|
|
827 |
with pytest.raises(KeyError):
|
|
828 |
context['form_var_foo_live_name']
|
|
829 |
|
|
830 |
|
786 |
831 |
def test_lazy_formdata_queryset(pub, variable_test_data):
|
787 |
832 |
lazy_formdata = variable_test_data
|
788 |
833 |
data_class = lazy_formdata._formdef.data_class()
|