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