From 6da85ff52da42bd531fc54e296c80c3012877b0c Mon Sep 17 00:00:00 2001 From: Richard Blechinger <hello@pretzelhands.com> Date: Thu, 18 Nov 2021 13:13:23 +0100 Subject: [PATCH] Add ?surrounding as query param --- program/views.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/program/views.py b/program/views.py index 639589af..f42b56fb 100644 --- a/program/views.py +++ b/program/views.py @@ -19,6 +19,7 @@ # import json +import logging from datetime import date, datetime, time, timedelta from django.contrib.auth.models import User @@ -37,6 +38,7 @@ from program.serializers import TypeSerializer, LanguageSerializer, MusicFocusSe UserSerializer from program.utils import get_cached_shows +logger = logging.getLogger(__name__) def json_day_schedule(request, year=None, month=None, day=None): if year is None and month is None and day is None: @@ -528,7 +530,6 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): start = datetime.combine(date.today(), time(0, 0)) end = start + timedelta(days=60) - if ('start' in self.request.query_params) and ('end' in self.request.query_params): start = datetime.combine(datetime.strptime(self.request.query_params.get('start'), '%Y-%m-%d').date(), time(0, 0)) end = datetime.combine(datetime.strptime(self.request.query_params.get('end'), '%Y-%m-%d').date(), time(23, 59)) @@ -536,6 +537,15 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): # Is this safe? order = self.request.query_params.get('order', '-start') + if ('surrounding' in self.request.query_params): + today = datetime.today() + + nearest_timeslots_in_future = TimeSlot.objects.filter(start__gte=today).order_by('start').values_list('id', flat=True)[:5] + nearest_timeslots_in_past = TimeSlot.objects.filter(start__lt=today).order_by('-start').values_list('id', flat=True)[:5] + relevant_timeslot_ids = list(nearest_timeslots_in_future) + list(nearest_timeslots_in_past) + + return TimeSlot.objects.filter(id__in=relevant_timeslot_ids).order_by(order) + # Endpoints # @@ -566,6 +576,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): pk = int_or_none('pk', self.kwargs) show_pk = int_or_none('show_pk', self.kwargs) + if show_pk: timeslot = get_object_or_404(TimeSlot, pk=pk, show=show_pk) else: -- GitLab