6157 |
6157 |
assert formdef.data_class().select()[0].data['1_structured']['item'] == 'baz'
|
6158 |
6158 |
|
6159 |
6159 |
|
|
6160 |
def test_item_field_from_cards_check_lazy_live(pub):
|
|
6161 |
create_user(pub)
|
|
6162 |
formdef = create_formdef()
|
|
6163 |
formdef.data_class().wipe()
|
|
6164 |
|
|
6165 |
CardDef.wipe()
|
|
6166 |
carddef = CardDef()
|
|
6167 |
carddef.name = 'items'
|
|
6168 |
carddef.digest_template = '{{form_var_name}}'
|
|
6169 |
carddef.fields = [
|
|
6170 |
fields.StringField(id='0', label='string', varname='name'),
|
|
6171 |
fields.StringField(id='1', label='string', varname='attr'),
|
|
6172 |
]
|
|
6173 |
carddef.store()
|
|
6174 |
carddef.data_class().wipe()
|
|
6175 |
for i, value in enumerate(['foo', 'bar', 'baz']):
|
|
6176 |
carddata = carddef.data_class()()
|
|
6177 |
carddata.data = {
|
|
6178 |
'0': value,
|
|
6179 |
'1': 'attr%s' % i,
|
|
6180 |
}
|
|
6181 |
carddata.just_created()
|
|
6182 |
carddata.store()
|
|
6183 |
|
|
6184 |
ds = {'type': 'carddef:%s' % carddef.url_name}
|
|
6185 |
formdef.fields = [
|
|
6186 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
6187 |
fields.ItemField(id='1', label='string', type='item', varname='item', data_source=ds),
|
|
6188 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
6189 |
fields.CommentField(id='3', label='live value: {{ form_var_item_live_var_attr }}', type='comment'),
|
|
6190 |
fields.PageField(id='4', label='3rd page', type='page'),
|
|
6191 |
]
|
|
6192 |
formdef.store()
|
|
6193 |
|
|
6194 |
resp = get_app(pub).get('/test/')
|
|
6195 |
resp.form['f1'] = '2'
|
|
6196 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
6197 |
assert 'live value: attr1' in resp
|
|
6198 |
|
|
6199 |
# add a field with a condition on first page and third page
|
|
6200 |
formdef.fields[1:1] = [
|
|
6201 |
fields.StringField(id='5', label='field with condition', type='string',
|
|
6202 |
required=False, condition={'type': 'django', 'value': '1'}),
|
|
6203 |
]
|
|
6204 |
formdef.fields.append(
|
|
6205 |
fields.StringField(id='6', label='second field with condition', type='string',
|
|
6206 |
required=False, condition={'type': 'django', 'value': '1'}))
|
|
6207 |
formdef.store()
|
|
6208 |
resp = get_app(pub).get('/test/')
|
|
6209 |
resp.form['f1'] = '2'
|
|
6210 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
6211 |
assert 'live value: attr1' in resp
|
|
6212 |
resp = resp.form.submit('submit') # -> 3rd page
|
|
6213 |
resp = resp.form.submit('previous') # -> 2nd page
|
|
6214 |
assert 'live value: attr1' in resp
|
|
6215 |
|
|
6216 |
|
6160 |
6217 |
def test_item_field_with_disabled_items(http_requests, pub):
|
6161 |
6218 |
user = create_user(pub)
|
6162 |
6219 |
formdef = create_formdef()
|
6163 |
|
-
|