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 dfd25ac3f3040fade3a0d3d0fde099d2df390c49..4e97a5391e34b4612ebafb7c8b83583d2fca1f51 100644 --- a/program/views.py +++ b/program/views.py @@ -193,11 +193,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." ), ), @@ -207,6 +203,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): """