From 2f4472f897cb40aab674beb31dc0ab076fc20607 Mon Sep 17 00:00:00 2001 From: Konrad Mohrfeldt <konrad.mohrfeldt@farbdev.org> Date: Fri, 26 Jan 2024 20:48:32 +0100 Subject: [PATCH] refactor: rename start and end timeslot filters and support datetimes These filters now support datetimes as well as dates and their naming now reflects what they are querying. --- program/filters.py | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/program/filters.py b/program/filters.py index a212a42c..41c3a4a5 100644 --- a/program/filters.py +++ b/program/filters.py @@ -184,20 +184,20 @@ class TimeSlotFilterSet(filters.FilterSet): "If specified without a datetime value the current date and time is assumed." ), ) - start = filters.DateFilter( - method="filter_start", + starts_after = filters.DateTimeFilter( + field_name="start", + lookup_expr="gte", help_text="Only returns timeslots that start at or after the specified datetime.", ) - end = filters.DateFilter( - method="filter_end", + ends_before = filters.DateTimeFilter( + field_name="end", + lookup_expr="lt", help_text="Only returns timeslots that end before the specified datetime.", ) - schedule_ids = IntegerInFilter( field_name="schedule", help_text="Return only timeslots that belong to the specified schedule(s).", ) - show_ids = IntegerInFilter( field_name="schedule__show", help_text="Return only timeslots that belong to the specified show(s).", @@ -217,14 +217,6 @@ class TimeSlotFilterSet(filters.FilterSet): 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): - start = timezone.make_aware(datetime.datetime.combine(value, datetime.time.min)) - return queryset.filter(start__gte=start) - - def filter_end(self, queryset: QuerySet, name: str, value: datetime.date): - end = timezone.make_aware(datetime.datetime.combine(value, datetime.time.max)) - return queryset.filter(end__lte=end) - def filter_queryset(self, queryset): queryset = super().filter_queryset(queryset) # This is for backwards compatibility as the surrounding-filter was formerly implemented -- GitLab