1184 |
1184 |
assert not resp.form['f2'].attrs.get('value')
|
1185 |
1185 |
|
1186 |
1186 |
|
1187 |
|
def test_dynamic_item_field_from_custom_view_on_cards(pub):
|
|
1187 |
@pytest.mark.parametrize('field_type', ['item', 'string', 'email'])
|
|
1188 |
def test_dynamic_item_field_from_custom_view_on_cards(pub, field_type):
|
1188 |
1189 |
if not pub.is_using_postgresql():
|
1189 |
1190 |
pytest.skip('this requires SQL')
|
1190 |
1191 |
return
|
... | ... | |
1212 |
1213 |
carddef.digest_templates = {'default': '{{form_var_attr}}'}
|
1213 |
1214 |
carddef.workflow_roles = {'_editor': user.roles[0]}
|
1214 |
1215 |
carddef.fields = [
|
1215 |
|
fields.ItemField(id='0', type='item', label='item', varname='item', items=['foo', 'bar', 'baz']),
|
1216 |
1216 |
fields.StringField(id='1', type='string', label='string', varname='attr'),
|
1217 |
1217 |
]
|
|
1218 |
if field_type == 'item':
|
|
1219 |
carddef.fields.append(
|
|
1220 |
fields.ItemField(id='0', type='item', label='item', varname='item', items=['foo', 'bar', 'baz'])
|
|
1221 |
)
|
|
1222 |
elif field_type == 'string':
|
|
1223 |
carddef.fields.append(fields.StringField(id='0', type='string', label='string', varname='item'))
|
|
1224 |
elif field_type == 'email':
|
|
1225 |
carddef.fields.append(fields.EmailField(id='0', type='email', label='email', varname='item'))
|
1218 |
1226 |
carddef.store()
|
1219 |
1227 |
carddef.data_class().wipe()
|
1220 |
1228 |
baz_ids = set()
|
... | ... | |
1222 |
1230 |
carddata = carddef.data_class()()
|
1223 |
1231 |
carddata.data = {
|
1224 |
1232 |
'0': value,
|
1225 |
|
'0_display': value,
|
1226 |
1233 |
'1': 'attr%s' % i,
|
1227 |
1234 |
}
|
|
1235 |
if field_type == 'item':
|
|
1236 |
carddata.data['0_display'] = value
|
1228 |
1237 |
carddata.just_created()
|
1229 |
1238 |
carddata.store()
|
1230 |
1239 |
if value == 'baz':
|
... | ... | |
1246 |
1255 |
resp.forms['save-custom-view']['visibility'] = 'datasource'
|
1247 |
1256 |
resp = resp.forms['save-custom-view'].submit().follow()
|
1248 |
1257 |
|
1249 |
|
assert resp.forms['listing-settings']['filter-0-value'].attrs['data-allow-template']
|
1250 |
|
assert 'custom value' in [x[2] for x in resp.forms['listing-settings']['filter-0-value'].options]
|
1251 |
|
resp.forms['listing-settings']['filter-0-value'].force_value('{{ form_var_blah }}')
|
|
1258 |
if field_type == 'item':
|
|
1259 |
# some javascript to get a text input for filter value
|
|
1260 |
assert resp.forms['listing-settings']['filter-0-value'].attrs['data-allow-template']
|
|
1261 |
assert 'custom value' in [x[2] for x in resp.forms['listing-settings']['filter-0-value'].options]
|
|
1262 |
resp.forms['listing-settings']['filter-0-value'].force_value('{{ form_var_blah }}')
|
|
1263 |
else:
|
|
1264 |
resp.forms['listing-settings']['filter-0-value'] = '{{ form_var_blah }}'
|
1252 |
1265 |
|
1253 |
1266 |
resp = resp.forms['listing-settings'].submit()
|
1254 |
1267 |
assert resp.forms['listing-settings']['filter-0-value'].value == '{{ form_var_blah }}'
|