api: category filter (#49355)
This commit is contained in:
parent
a8a07d058e
commit
f32f64ea54
|
@ -443,6 +443,13 @@ class Agendas(APIView):
|
|||
return Response({'data': []})
|
||||
agendas_queryset = agendas_queryset.filter(slug__icontains=request.GET['q'])
|
||||
|
||||
if request.GET.get('category'):
|
||||
cat_slug = request.GET['category']
|
||||
if cat_slug == '__none__':
|
||||
agendas_queryset = agendas_queryset.filter(category__isnull=True)
|
||||
else:
|
||||
agendas_queryset = agendas_queryset.filter(category__slug=cat_slug)
|
||||
|
||||
with_open_events = request.GET.get('with_open_events') in ['1', 'true']
|
||||
if with_open_events:
|
||||
# return only events agenda
|
||||
|
|
|
@ -15,6 +15,7 @@ from django.utils.timezone import now, make_aware, localtime
|
|||
from chrono.agendas.models import (
|
||||
Agenda,
|
||||
Booking,
|
||||
Category,
|
||||
Desk,
|
||||
Event,
|
||||
MeetingType,
|
||||
|
@ -127,9 +128,11 @@ def virtual_meetings_agenda(meetings_agenda):
|
|||
|
||||
|
||||
def test_agendas_api(app):
|
||||
event_agenda = Agenda.objects.create(label='Foo bar')
|
||||
event_agenda2 = Agenda.objects.create(label='Foo bar 2')
|
||||
meetings_agenda1 = Agenda.objects.create(label='Foo bar Meeting', kind='meetings')
|
||||
category_a = Category.objects.create(label='Category A')
|
||||
category_b = Category.objects.create(label='Category B')
|
||||
event_agenda = Agenda.objects.create(label='Foo bar', category=category_a)
|
||||
Agenda.objects.create(label='Foo bar 2', category=category_a)
|
||||
meetings_agenda1 = Agenda.objects.create(label='Foo bar Meeting', kind='meetings', category=category_b)
|
||||
Agenda.objects.create(label='Foo bar Meeting 2', kind='meetings')
|
||||
resource1 = Resource.objects.create(label='Resource 1', description='Foo bar Resource 1')
|
||||
resource2 = Resource.objects.create(label='Resource 2', description='Foo bar Resource 2')
|
||||
|
@ -229,6 +232,17 @@ def test_agendas_api(app):
|
|||
resp = app.get('/api/agenda/', params={'with_open_events': '1'})
|
||||
assert len(resp.json['data']) == 0
|
||||
|
||||
resp = app.get('/api/agenda/', params={'category': ''})
|
||||
assert len(resp.json['data']) == 5
|
||||
resp = app.get('/api/agenda/', params={'category': '__none__'})
|
||||
assert len(resp.json['data']) == 2
|
||||
resp = app.get('/api/agenda/', params={'category': 'category-a'})
|
||||
assert len(resp.json['data']) == 2
|
||||
resp = app.get('/api/agenda/', params={'category': 'category-b'})
|
||||
assert len(resp.json['data']) == 1
|
||||
resp = app.get('/api/agenda/', params={'category': 'unknown'})
|
||||
assert len(resp.json['data']) == 0
|
||||
|
||||
event1 = Event.objects.create(
|
||||
start_datetime=(localtime() + datetime.timedelta(days=5)).replace(hour=10, minute=0),
|
||||
places=20,
|
||||
|
|
Loading…
Reference in New Issue