From 56140d88d35ff09a34c3b05d3c8559761ab42a95 Mon Sep 17 00:00:00 2001
From: Chris Pastl <chris@crispybits.app>
Date: Fri, 31 May 2024 12:00:19 +0200
Subject: [PATCH] fix: auto-gen doc params

---
 program/filters.py | 22 ++++++++++++++++++++++
 program/views.py   | 10 +++++-----
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/program/filters.py b/program/filters.py
index dc2c841a..7819371e 100644
--- a/program/filters.py
+++ b/program/filters.py
@@ -280,3 +280,25 @@ 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 ae8accb6..b70e0d78 100644
--- a/program/views.py
+++ b/program/views.py
@@ -157,6 +157,7 @@ class APIDayScheduleViewSet(
     viewsets.GenericViewSet,
 ):
     queryset = TimeSlot.objects.all()
+    serializer_class = TimeSlotSerializer
 
     def list(self, request, year=None, month=None, day=None):
         # datetime.combine returns a timezone naive datetime object
@@ -187,11 +188,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 +198,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