From cf2f8602940fbad609161f70bbe399b09f4792f0 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Thu, 7 Nov 2024 19:03:48 -0400 Subject: [PATCH] refactor: introduce PlaylistFileUsageFilter --- program/filters.py | 11 +++++++++++ program/views.py | 13 +------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/program/filters.py b/program/filters.py index d442c2ac..656d4804 100644 --- a/program/filters.py +++ b/program/filters.py @@ -334,3 +334,14 @@ class VirtualTimeslotFilterSet(filters.FilterSet): class Meta: model = models.TimeSlot fields = ["start", "end", "include_virtual"] + + +class PlaylistFileUsageFilter(filters.FilterSet): + file_id = filters.NumberFilter( + field_name="entries__file_id", + help_text="Return only playlists that use to the specified file ID.", + ) + + class Meta: + fields = ("file_id",) + model = models.Playlist diff --git a/program/views.py b/program/views.py index edc0b304..deb1577e 100644 --- a/program/views.py +++ b/program/views.py @@ -1700,6 +1700,7 @@ class APIPlaylistViewSet(viewsets.ModelViewSet): class APIPlaylistUsageViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + filterset_class = filters.PlaylistFileUsageFilter serializer_class = PlaylistSerializer def get_queryset(self): @@ -1710,15 +1711,3 @@ class APIPlaylistUsageViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): return Playlist.objects.none() return Playlist.objects.all() - - def list(self, request, *args, **kwargs): - """The list filters the playlists by the `file_id` they refer to.""" - - if file_id := request.query_params.get("file_id"): - queryset = self.get_queryset().filter(entries__file_id=int(file_id)) - else: - queryset = self.get_queryset() - - serializer = PlaylistSerializer(queryset, many=True) - - return Response(serializer.data) -- GitLab