Projet

Général

Profil

0001-api-add-filter-number-filter-in-list-endpoints-60625.patch

Lauréline Guérin, 13 janvier 2022 15:05

Télécharger (3,86 ko)

Voir les différences:

Subject: [PATCH] api: add filter-number filter in /list endpoints (#60625)

 tests/api/test_formdata.py   | 36 ++++++++++++++++++++++++++++++++++++
 wcs/backoffice/management.py |  7 +++++++
 2 files changed, 43 insertions(+)
tests/api/test_formdata.py
839 839
    assert len(resp.json) == 0
840 840

  
841 841

  
842
def test_api_list_formdata_number_filter(pub, local_user):
843
    pub.role_class.wipe()
844
    role = pub.role_class(name='test')
845
    role.store()
846

  
847
    local_user.roles = [role.id]
848
    local_user.store()
849

  
850
    FormDef.wipe()
851
    formdef = FormDef()
852
    formdef.name = 'test'
853
    formdef.workflow_roles = {'_receiver': role.id}
854
    formdef.fields = []
855
    formdef.store()
856

  
857
    data_class = formdef.data_class()
858
    data_class.wipe()
859

  
860
    for i in range(2):
861
        formdata = data_class()
862
        formdata.data = {}
863
        formdata.user_id = local_user.id
864
        formdata.just_created()
865
        formdata.jump_status('new')
866
        formdata.store()
867

  
868
    resp = get_app(pub).get(sign_uri('/api/forms/test/list?filter-number=1-1', user=local_user))
869
    assert len(resp.json) == 1
870
    resp = get_app(pub).get(sign_uri('/api/forms/test/list?filter-number=1-2', user=local_user))
871
    assert len(resp.json) == 1
872
    resp = get_app(pub).get(sign_uri('/api/forms/test/list?filter-number=1-42', user=local_user))
873
    assert len(resp.json) == 0
874
    resp = get_app(pub).get(sign_uri('/api/forms/test/list?filter-number=42-1', user=local_user))
875
    assert len(resp.json) == 0
876

  
877

  
842 878
def test_api_list_formdata_block_field_filter(pub, local_user):
843 879
    if not pub.is_using_postgresql():
844 880
        pytest.skip('this requires SQL')
wcs/backoffice/management.py
1013 1013
            'bool',
1014 1014
            'items',
1015 1015
            'internal-id',
1016
            'number',
1016 1017
            'period-date',
1017 1018
            'user-id',
1018 1019
            'submission-agent-id',
......
1644 1645

  
1645 1646
        fake_fields = [
1646 1647
            FakeField('internal-id', 'internal-id', _('Identifier')),
1648
            FakeField('number', 'number', _('Number')),
1647 1649
            FakeField('start', 'period-date', _('Start')),
1648 1650
            FakeField('end', 'period-date', _('End')),
1649 1651
            FakeField('start-mtime', 'period-date', _('Start (modification time)')),
......
1692 1694
                # varname is 'internal_id' and not 'internal-id', fill filter-internal-id-value
1693 1695
                filters_dict['filter-internal-id-value'] = filters_dict['filter-internal-id']
1694 1696

  
1697
            if filter_field.type == 'number' and filters_dict.get('filter-number'):
1698
                filters_dict['filter-number-value'] = filters_dict['filter-number']
1699

  
1695 1700
            if filter_field.type == 'user-id':
1696 1701
                # convert uuid based filter into local id filter
1697 1702
                name_id = filters_dict.get('filter-user-uuid')
......
1769 1774
                )
1770 1775
            elif filter_field.type == 'internal-id':
1771 1776
                criterias.append(Equal('id', str(filter_field_value)))
1777
            elif filter_field.type == 'number':
1778
                criterias.append(Equal('id_display', str(filter_field_value)))
1772 1779
            elif filter_field.type == 'period-date':
1773 1780
                try:
1774 1781
                    filter_date_value = misc.get_as_datetime(filter_field_value).timetuple()
1775
-