Projet

Général

Profil

0001-cards-ignore-custom-view-criterias-when-looking-up-o.patch

Frédéric Péters, 20 avril 2022 15:01

Télécharger (3,11 ko)

Voir les différences:

Subject: [PATCH] cards: ignore custom view criterias when looking up on id
 (#52653)

 tests/test_carddef.py | 52 +++++++++++++++++++++++++++++++++++++++++++
 wcs/carddef.py        |  2 +-
 2 files changed, 53 insertions(+), 1 deletion(-)
tests/test_carddef.py
904 904
        {'varname': 'foo_block_foo_1', 'type': 'item', 'obj': 'formdef:formdef-1'},
905 905
        {'varname': 'bar', 'type': 'items', 'obj': 'formdef:formdef-2'},
906 906
    ]
907

  
908

  
909
def test_data_source_custom_view_data_access(pub):
910
    CardDef.wipe()
911
    carddef = CardDef()
912
    carddef.name = 'foo'
913
    carddef.fields = [
914
        StringField(id='1', label='Test', type='string', varname='foo'),
915
        StringField(id='2', label='Test2', type='string', varname='foo2'),
916
    ]
917
    carddef.digest_templates = {'default': '{{ form_var_foo }}'}
918
    carddef.store()
919
    carddef.data_class().wipe()
920

  
921
    pub.custom_view_class.wipe()
922

  
923
    custom_view = pub.custom_view_class()
924
    custom_view.title = 'view'
925
    custom_view.formdef = carddef
926
    custom_view.columns = {'list': [{'id': 'id'}]}
927
    custom_view.filters = {'filter-1': 'on', 'filter-1-value': 'xxx'}
928

  
929
    custom_view.visibility = 'datasource'
930
    custom_view.store()
931

  
932
    carddata = carddef.data_class()()
933
    carddata.data = {'1': 'hello world'}
934
    carddata.just_created()
935
    carddata.store()
936

  
937
    # no filter, there's a card
938
    cards = CardDef.get_data_source_items('carddef:foo')
939
    assert len(cards) == 1
940
    cards = CardDef.get_data_source_items('carddef:foo', get_by_text='hello world')
941
    assert len(cards) == 1
942

  
943
    # nothing returned as the filter doesn't match anything
944
    cards = CardDef.get_data_source_items('carddef:foo:view')
945
    assert len(cards) == 0
946

  
947
    # filter is ignored for id lookup
948
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.id)
949
    assert len(cards) == 1
950
    assert cards[0]['text'] == 'hello world'
951

  
952
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.get_display_id())
953
    assert len(cards) == 1
954
    assert cards[0]['text'] == 'hello world'
955

  
956
    # filter is not ignored for text lookup
957
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_text='hello world')
958
    assert len(cards) == 0
wcs/carddef.py
207 207
        criterias = [StrictNotEqual('status', 'draft'), Null('anonymised')]
208 208
        order_by = None
209 209
        digest_key = 'default'
210
        if len(parts) > 2:
210
        if len(parts) > 2 and not get_by_id:
211 211
            if custom_view is None:
212 212
                custom_view = cls.get_data_source_custom_view(data_source_id, carddef=carddef)
213 213
                if not custom_view:
214
-