Projet

Général

Profil

0001-api-agendas-endpoint-with-filtering-37436.patch

Lauréline Guérin, 06 mars 2020 12:01

Télécharger (1,77 ko)

Voir les différences:

Subject: [PATCH] api: agendas endpoint with filtering (#37436)

 chrono/api/views.py | 7 ++++++-
 tests/test_api.py   | 7 +++++++
 2 files changed, 13 insertions(+), 1 deletion(-)
chrono/api/views.py
151 151
    permission_classes = ()
152 152

  
153 153
    def get(self, request, format=None):
154
        agendas = [get_agenda_detail(request, agenda) for agenda in Agenda.objects.all().order_by('label')]
154
        agendas_queryset = Agenda.objects.all().order_by('label')
155
        if 'q' in request.GET:
156
            if not request.GET['q']:
157
                return Response({'data': []})
158
            agendas_queryset = agendas_queryset.filter(slug__icontains=request.GET['q'])
159
        agendas = [get_agenda_detail(request, agenda) for agenda in agendas_queryset]
155 160
        return Response({'data': agendas})
156 161

  
157 162

  
tests/test_api.py
155 155
        ]
156 156
    }
157 157

  
158
    resp = app.get('/api/agenda/', params={'q': 'foo'})
159
    assert len(resp.json['data']) == 3
160
    resp = app.get('/api/agenda/', params={'q': 'MEET'})
161
    assert len(resp.json['data']) == 1
162
    resp = app.get('/api/agenda/', params={'q': ''})
163
    assert len(resp.json['data']) == 0
164

  
158 165

  
159 166
def test_agendas_meetingtypes_api(app, some_data, meetings_agenda):
160 167
    resp = app.get('/api/agenda/%s/meetings/' % meetings_agenda.slug)
161
-