Projet

Général

Profil

0001-api-category-filter-49355.patch

Lauréline Guérin, 11 décembre 2020 14:50

Télécharger (3,1 ko)

Voir les différences:

Subject: [PATCH] api: category filter (#49355)

 chrono/api/views.py |  7 +++++++
 tests/test_api.py   | 18 +++++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)
chrono/api/views.py
390 390
                return Response({'data': []})
391 391
            agendas_queryset = agendas_queryset.filter(slug__icontains=request.GET['q'])
392 392

  
393
        if 'category' in request.GET:
394
            cat_slug = request.GET['category']
395
            if cat_slug:
396
                agendas_queryset = agendas_queryset.filter(category__slug=cat_slug)
397
            else:
398
                agendas_queryset = agendas_queryset.filter(category__isnull=True)
399

  
393 400
        with_open_events = request.GET.get('with_open_events') in ['1', 'true']
394 401
        if with_open_events:
395 402
            # return only events agenda
tests/test_api.py
15 15
from chrono.agendas.models import (
16 16
    Agenda,
17 17
    Booking,
18
    Category,
18 19
    Desk,
19 20
    Event,
20 21
    MeetingType,
......
126 127

  
127 128

  
128 129
def test_agendas_api(app):
129
    event_agenda = Agenda.objects.create(label='Foo bar')
130
    event_agenda2 = Agenda.objects.create(label='Foo bar 2')
131
    meetings_agenda1 = Agenda.objects.create(label='Foo bar Meeting', kind='meetings')
130
    category_a = Category.objects.create(label='Category A')
131
    category_b = Category.objects.create(label='Category B')
132
    event_agenda = Agenda.objects.create(label='Foo bar', category=category_a)
133
    Agenda.objects.create(label='Foo bar 2', category=category_a)
134
    meetings_agenda1 = Agenda.objects.create(label='Foo bar Meeting', kind='meetings', category=category_b)
132 135
    Agenda.objects.create(label='Foo bar Meeting 2', kind='meetings')
133 136
    resource1 = Resource.objects.create(label='Resource 1', description='Foo bar Resource 1')
134 137
    resource2 = Resource.objects.create(label='Resource 2', description='Foo bar Resource 2')
......
228 231
    resp = app.get('/api/agenda/', params={'with_open_events': '1'})
229 232
    assert len(resp.json['data']) == 0
230 233

  
234
    resp = app.get('/api/agenda/', params={'category': ''})
235
    assert len(resp.json['data']) == 2
236
    resp = app.get('/api/agenda/', params={'category': 'category-a'})
237
    assert len(resp.json['data']) == 2
238
    resp = app.get('/api/agenda/', params={'category': 'category-b'})
239
    assert len(resp.json['data']) == 1
240
    resp = app.get('/api/agenda/', params={'category': 'unknown'})
241
    assert len(resp.json['data']) == 0
242

  
231 243
    event1 = Event.objects.create(
232 244
        start_datetime=(localtime() + datetime.timedelta(days=5)).replace(hour=10, minute=0),
233 245
        places=20,
234
-