diff --git a/program/views.py b/program/views.py index 520e003b921424011f1876654a7eb65be44883d4..639589af5933a8c3de29732d874563c30acb432c 100644 --- a/program/views.py +++ b/program/views.py @@ -522,17 +522,20 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): def get_queryset(self): show_pk = int_or_none('show_pk', self.kwargs) schedule_pk = int_or_none('schedule_pk', self.kwargs) - # Filters # Return next 60 days by default 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)) + # Is this safe? + order = self.request.query_params.get('order', '-start') + # Endpoints # @@ -541,7 +544,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): # Returns timeslots of the given show and schedule # if show_pk and schedule_pk: - return TimeSlot.objects.filter(show=show_pk, schedule=schedule_pk, start__gte=start, end__lte=end).order_by('start') + return TimeSlot.objects.filter(show=show_pk, schedule=schedule_pk, start__gte=start, end__lte=end).order_by(order) # # /shows/1/timeslots/ @@ -549,7 +552,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): # Returns timeslots of the show # elif show_pk and schedule_pk is None: - return TimeSlot.objects.filter(show=show_pk, start__gte=start, end__lte=end).order_by('start') + return TimeSlot.objects.filter(show=show_pk, start__gte=start, end__lte=end).order_by(order) # # /timeslots/ @@ -557,7 +560,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): # Returns all timeslots # else: - return TimeSlot.objects.filter(start__gte=start, end__lte=end).order_by('start') + return TimeSlot.objects.filter(start__gte=start, end__lte=end).order_by(order) def retrieve(self, request, *args, **kwargs): pk = int_or_none('pk', self.kwargs)