Projet

Général

Profil

0001-api-category-filter-49355.patch

Lauréline Guérin, 25 janvier 2021 09:34

Télécharger (3,22 ko)

Voir les différences:

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

 chrono/api/views.py |  7 +++++++
 tests/test_api.py   | 20 +++++++++++++++++---
 2 files changed, 24 insertions(+), 3 deletions(-)
chrono/api/views.py
443 443
                return Response({'data': []})
444 444
            agendas_queryset = agendas_queryset.filter(slug__icontains=request.GET['q'])
445 445

  
446
        if request.GET.get('category'):
447
            cat_slug = request.GET['category']
448
            if cat_slug == '__none__':
449
                agendas_queryset = agendas_queryset.filter(category__isnull=True)
450
            else:
451
                agendas_queryset = agendas_queryset.filter(category__slug=cat_slug)
452

  
446 453
        with_open_events = request.GET.get('with_open_events') in ['1', 'true']
447 454
        if with_open_events:
448 455
            # 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,
......
127 128

  
128 129

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

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

  
232 246
    event1 = Event.objects.create(
233 247
        start_datetime=(localtime() + datetime.timedelta(days=5)).replace(hour=10, minute=0),
234 248
        places=20,
235
-