From fe22b9ae1d679baccf52a52b47fa474a4b076c51 Mon Sep 17 00:00:00 2001
From: Chris Pastl <chris@crispybits.app>
Date: Wed, 17 Apr 2024 16:29:27 +0200
Subject: [PATCH] Fix: add PlayoutFilterSet for doc autogen

---
 program/filters.py | 25 +++++++++++++++++++++++++
 program/views.py   |  9 ++++-----
 2 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/program/filters.py b/program/filters.py
index dc2c841a..54e3cc8e 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 dfd25ac3..4e97a539 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):
         """
-- 
GitLab