From 706567c759a7d7c8e0f2020a911ce62bc201ce66 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Thu, 15 Feb 2024 18:17:55 -0400 Subject: [PATCH] refactor: remove filter_active --- program/filters.py | 36 ++---------------------------------- 1 file changed, 2 insertions(+), 34 deletions(-) diff --git a/program/filters.py b/program/filters.py index f7669b5b..331d7091 100644 --- a/program/filters.py +++ b/program/filters.py @@ -5,7 +5,7 @@ from django_filters import rest_framework as filters from django_filters import widgets from django import forms -from django.db.models import Exists, OuterRef, Q, QuerySet +from django.db.models import Exists, OuterRef, QuerySet from django.utils import timezone from program import models @@ -74,11 +74,7 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet): ) is_active = filters.BooleanFilter( field_name="is_active", - method="filter_active", - help_text=( - "Return only currently running shows (with timeslots in the future) if true " - "or past or upcoming shows if false." - ), + help_text="Return only currently active/inactive shows.", ) is_writable = filters.BooleanFilter( method="filter_writable", @@ -121,34 +117,6 @@ class ShowFilterSet(StaticFilterHelpTextMixin, filters.FilterSet): help_text="Return only shows of the given type slug.", ) - def filter_active(self, queryset: QuerySet, name: str, value: bool): - # Filter currently running shows - # Get currently running schedules to filter by first - # For single dates we test if there'll be one in the future (and ignore the until date) - # TODO: Really consider first_date? (=currently active, not just upcoming ones) - # Add limit for future? - show_ids = ( - models.Schedule.objects.filter( - # not "once" schedules with first_date in the past and last_date in the future - Q( - rrule__freq__gt=0, - first_date__lte=timezone.now(), - last_date__gte=timezone.now(), - ) - # "once" schedules with first_date in the future - | Q(rrule__freq=0, first_date__gte=timezone.now()) - ) - .distinct() - .values_list("show_id", flat=True) - ) - if value: - # Filter active shows based on timeslots as well as on the is_active flag - # Even if there are future timeslots but is_active=True the show will be considered as - # inactive - return queryset.filter(id__in=show_ids, is_active=True) - else: - return queryset.exclude(id__in=show_ids, is_active=True) - def filter_writable(self, queryset: QuerySet, _: str, value: bool) -> QuerySet: user = self.request.user if self.request.user.is_authenticated else None -- GitLab