From 094351f5acfd3a1dd310a9c7e4c46f0fe911b069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 10 Aug 2017 09:25:14 +0200 Subject: [PATCH] api: optimize fillslot endpoint calculation in meetings/datetimes API (#17954) --- chrono/api/views.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/chrono/api/views.py b/chrono/api/views.py index daeaa3f..4346111 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -173,19 +173,28 @@ class MeetingDatetimes(GenericAPIView): entries.sort(key=lambda x: x.start_datetime) + # generate a fake event pk, it shouldn't be part of agenda.slug and not + # a valid event id (this is done by prefixing with 0). + for i in range(1000): + fake_event_pk = '0%s' % i + if not fake_event_pk in agenda.slug: + break + + fillslot_url = request.build_absolute_uri( + reverse('api-fillslot', + kwargs={ + 'agenda_identifier': agenda.slug, + 'event_pk': fake_event_pk, + })) + response = {'data': [{'id': x.id, 'datetime': localtime(x.start_datetime).strftime('%Y-%m-%d %H:%M:%S'), 'text': unicode(x), 'disabled': bool(x.full), 'api': { - 'fillslot_url': request.build_absolute_uri( - reverse('api-fillslot', - kwargs={ - 'agenda_identifier': agenda.slug, - 'event_pk': x.id, - })), - } - } for x in entries]} + 'fillslot_url': fillslot_url.replace(fake_event_pk, str(x.id)), + }, + } for x in entries]} return Response(response) meeting_datetimes = MeetingDatetimes.as_view() -- 2.14.0