diff --git a/program/filters.py b/program/filters.py index dc2c841a7caa055563f9665b630d4c3dc45bcaf6..54e3cc8e25b2ad3386ed4b66906898506c5b15c6 100644 --- a/program/filters.py +++ b/program/filters.py @@ -280,3 +280,28 @@ class ActiveFilterSet(StaticFilterHelpTextMixin, filters.FilterSet): fields = [ "is_active", ] + + +class PlayoutFilterSet(filters.FilterSet): + start = filters.DateFilter( + field_name="start", + lookup_expr="gte", + help_text="Returns timeslots that start at or after the specified datetime (default: today).", + ) + end = filters.DateFilter( + field_name="end", + lookup_expr="lte", + help_text="Returns timeslots that end at or before the specified datetime (default: one week after start date).", + ) + include_virtual = filters.BooleanFilter( + field_name="include_virtual", + help_text="Include virtual timeslots (default: false)." + ) + + class Meta: + model = models.TimeSlot + fields = [ + "start", + "end", + "include_virtual" + ] diff --git a/program/views.py b/program/views.py index 1cf8408e629093688ce2771448c6fe49c9f6e620..89ac59f9f9074863ab3339ef7bc4a54ac541db2f 100644 --- a/program/views.py +++ b/program/views.py @@ -187,11 +187,7 @@ class APIDayScheduleViewSet( list=extend_schema( summary="List scheduled playout.", description=( - "Returns a list of the scheduled playout." - "Expects parameters `start` (date), `end` (date), and `includeVirtual` (boolean)." - "- `start` is today by default." - "- `end` is one week after the start date by default." - "- `includeVirtual` is false by default." + "Returns a list of the scheduled playout. " "The schedule will include virtual timeslots to fill unscheduled gaps if requested." ), ), @@ -201,6 +197,9 @@ class APIPlayoutViewSet( viewsets.GenericViewSet, ): queryset = TimeSlot.objects.all() + serializer_class = TimeSlotSerializer + filter_backends = [DjangoFilterBackend] + filterset_class = filters.PlayoutFilterSet def list(self, request, *args, **kwargs): """