misc: save custom view digest in items filtered on the custom view (#64942)
This commit is contained in:
parent
53b1ba16f3
commit
585a60f3fc
|
@ -5819,7 +5819,7 @@ def test_item_field_from_custom_view_on_cards(pub):
|
|||
CardDef.wipe()
|
||||
carddef = CardDef()
|
||||
carddef.name = 'items'
|
||||
carddef.digest_templates = {'default': '{{form_var_name}}'}
|
||||
carddef.digest_templates = {'default': '{{form_var_attr}}'}
|
||||
carddef.workflow_roles = {'_editor': user.roles[0]}
|
||||
carddef.fields = [
|
||||
fields.ItemField(id='0', type='item', label='item', varname='item', items=['foo', 'bar', 'baz']),
|
||||
|
@ -5833,7 +5833,7 @@ def test_item_field_from_custom_view_on_cards(pub):
|
|||
carddata.data = {
|
||||
'0': value,
|
||||
'0_display': value,
|
||||
'1': 'attr%s' % i,
|
||||
'1': 'attr%s' % (i + 1),
|
||||
}
|
||||
carddata.just_created()
|
||||
carddata.store()
|
||||
|
@ -5870,12 +5870,32 @@ def test_item_field_from_custom_view_on_cards(pub):
|
|||
|
||||
resp = get_app(pub).get('/test/')
|
||||
assert len(resp.form['f0'].options) == 10
|
||||
baz_id = list(baz_ids)[0]
|
||||
assert {x[0] for x in resp.form['f0'].options} == baz_ids
|
||||
resp.form['f0'].value = baz_id
|
||||
resp = resp.form.submit('submit') # -> validation page
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
assert formdef.data_class().select()[0].data['0'] in baz_ids
|
||||
assert formdef.data_class().select()[0].data['0'] == baz_id
|
||||
assert formdef.data_class().select()[0].data['0_display'] == 'attr%s' % baz_id
|
||||
assert formdef.data_class().select()[0].data['0_structured']['item'] == 'baz'
|
||||
|
||||
# give custom view it a custom digest
|
||||
formdef.data_class().wipe()
|
||||
carddef.digest_templates['custom-view:%s' % custom_view.slug] = 'X{{form_var_attr}}Y'
|
||||
carddef.store()
|
||||
# compute digests
|
||||
for carddata in carddef.data_class().select():
|
||||
carddata.store()
|
||||
|
||||
resp = get_app(pub).get('/test/')
|
||||
assert len(resp.form['f0'].options) == 10
|
||||
assert {x[0] for x in resp.form['f0'].options} == baz_ids
|
||||
resp.form['f0'].value = baz_id
|
||||
resp = resp.form.submit('submit') # -> validation page
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
assert formdef.data_class().select()[0].data['0'] == baz_id
|
||||
assert formdef.data_class().select()[0].data['0_display'] == 'Xattr%sY' % baz_id
|
||||
|
||||
|
||||
@pytest.mark.parametrize('filter_value', ['{{ "foo" }}', 'foo'])
|
||||
def test_items_field_from_custom_view_on_cards(pub, filter_value):
|
||||
|
|
|
@ -197,13 +197,14 @@ class CardDef(FormDef):
|
|||
criterias = [StrictNotEqual('status', 'draft'), Null('anonymised')]
|
||||
order_by = None
|
||||
digest_key = 'default'
|
||||
if len(parts) > 2 and not get_by_id:
|
||||
if len(parts) > 2:
|
||||
if custom_view is None:
|
||||
custom_view = cls.get_data_source_custom_view(data_source_id, carddef=carddef)
|
||||
if not custom_view:
|
||||
return []
|
||||
order_by = custom_view.order_by
|
||||
criterias.extend(custom_view.get_criterias(formdef=carddef, compile_templates=True))
|
||||
if not get_by_id:
|
||||
criterias.extend(custom_view.get_criterias(formdef=carddef, compile_templates=True))
|
||||
|
||||
if custom_view:
|
||||
view_digest_key = 'custom-view:%s' % custom_view.get_url_slug()
|
||||
|
|
Loading…
Reference in New Issue