Projet

Général

Profil

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

Frédéric Péters, 02 avril 2021 09:53

Télécharger (3,21 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
417 417
    assert CardDef.get_data_source_custom_view('carddef:foo-1:view', carddef=carddef2) is None
418 418
    assert CardDef.get_data_source_custom_view('carddef:foo-2:view', carddef=carddef2).id == custom_view2.id
419 419
    assert CardDef.get_data_source_custom_view('carddef:foo-2:view', carddef=carddef1) is None
420

  
421

  
422
def test_data_source_custom_view_data_access(pub):
423
    CardDef.wipe()
424
    carddef = CardDef()
425
    carddef.name = 'foo'
426
    carddef.fields = [
427
        StringField(id='1', label='Test', type='string', varname='foo'),
428
        StringField(id='2', label='Test2', type='string', varname='foo2'),
429
    ]
430
    carddef.digest_template = '{{ form_var_foo }}'
431
    carddef.store()
432
    carddef.data_class().wipe()
433

  
434
    pub.custom_view_class.wipe()
435

  
436
    custom_view = pub.custom_view_class()
437
    custom_view.title = 'view'
438
    custom_view.formdef = carddef
439
    custom_view.columns = {'list': [{'id': 'id'}]}
440
    custom_view.filters = {'filter-1': 'on', 'filter-1-value': 'xxx'}
441

  
442
    custom_view.visibility = 'datasource'
443
    custom_view.store()
444

  
445
    carddata = carddef.data_class()()
446
    carddata.data = {'1': 'hello world'}
447
    carddata.just_created()
448
    carddata.store()
449

  
450
    # no filter, there's a card
451
    cards = CardDef.get_data_source_items('carddef:foo')
452
    assert len(cards) == 1
453
    cards = CardDef.get_data_source_items('carddef:foo', get_by_text='hello world')
454
    assert len(cards) == 1
455

  
456
    # nothing returned as the filter doesn't match anything
457
    cards = CardDef.get_data_source_items('carddef:foo:view')
458
    assert len(cards) == 0
459

  
460
    # filter is ignored for id lookup
461
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.id)
462
    assert len(cards) == 1
463
    assert cards[0]['text'] == 'hello world'
464

  
465
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_id=carddata.get_display_id())
466
    assert len(cards) == 1
467
    assert cards[0]['text'] == 'hello world'
468

  
469
    # filter is not ignored for text lookup
470
    cards = CardDef.get_data_source_items('carddef:foo:view', get_by_text='hello world')
471
    assert len(cards) == 0
wcs/carddef.py
194 194
            return []
195 195
        criterias = [NotEqual('status', 'draft')]
196 196
        order_by = None
197
        if len(parts) > 2:
197
        if len(parts) > 2 and not get_by_id:
198 198
            if custom_view is None:
199 199
                custom_view = cls.get_data_source_custom_view(data_source_id, carddef=carddef)
200 200
                if not custom_view:
201
-