From edaba2e591ebcc100e6c365efa45500424121471 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Fri, 14 Oct 2022 20:52:03 -0400
Subject: [PATCH] Document new filters for Show viewset

---
 program/filters.py | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/program/filters.py b/program/filters.py
index 4ccece62..66ec6ec7 100644
--- a/program/filters.py
+++ b/program/filters.py
@@ -55,6 +55,9 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet):
         field_name="music_focus",
         help_text="Return only shows with given music focus(es).",
     )
+    music_focus__slug = filters.CharFilter(
+        field_name="music_focus", help_text="Return only shows with the give music focus slug."
+    )
     owner = IntegerInFilter(
         field_name="owners",
         help_text="Return only shows that belong to the given owner(s).",
@@ -62,15 +65,24 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet):
     category = IntegerInFilter(
         help_text="Return only shows of the given category or categories.",
     )
+    category__slug = filters.CharFilter(
+        field_name="category", help_text="Return only shows of the given category slug."
+    )
     language = IntegerInFilter(
         help_text="Return only shows of the given language(s).",
     )
     topic = IntegerInFilter(
         help_text="Return only shows of the given topic(s).",
     )
+    topic__slug = filters.CharFilter(
+        field_name="topic", help_text="Return only shows of the given topic slug."
+    )
     type = IntegerInFilter(
         help_text="Return only shows of a given type.",
     )
+    type__slug = filters.CharFilter(
+        field_name="type", help_text="Return only shows of the given type slug."
+    )
     public = filters.BooleanFilter(
         field_name="is_public",
         help_text="Return only shows that are public/non-public.",
@@ -154,9 +166,7 @@ class TimeSlotFilterSet(filters.FilterSet):
         ),
     )
 
-    def filter_surrounding(
-        self, queryset: QuerySet, name: str, value: datetime.datetime
-    ):
+    def filter_surrounding(self, queryset: QuerySet, name: str, value: datetime.datetime):
         nearest_timeslots_in_future = (
             models.TimeSlot.objects.filter(start__gte=value)
             .order_by("start")
@@ -167,9 +177,7 @@ class TimeSlotFilterSet(filters.FilterSet):
             .order_by("-start")
             .values_list("id", flat=True)[:5]
         )
-        relevant_timeslot_ids = list(nearest_timeslots_in_future) + list(
-            nearest_timeslots_in_past
-        )
+        relevant_timeslot_ids = list(nearest_timeslots_in_future) + list(nearest_timeslots_in_past)
         return queryset.filter(id__in=relevant_timeslot_ids)
 
     def filter_start(self, queryset: QuerySet, name: str, value: datetime.date):
-- 
GitLab