From 7618542de2840358020c48fba43b1ec047c5ba29 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Thu, 7 Nov 2024 15:01:05 -0400 Subject: [PATCH] feat: add playlists/usage route --- program/views.py | 25 +++++++++++++++++++++++++ steering/urls.py | 2 ++ 2 files changed, 27 insertions(+) diff --git a/program/views.py b/program/views.py index ea69e683..926289de 100644 --- a/program/views.py +++ b/program/views.py @@ -1699,3 +1699,28 @@ class APIPlaylistViewSet(viewsets.ModelViewSet): playlist.delete() return Response(status=status.HTTP_204_NO_CONTENT) + + +class APIPlaylistUsageViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): + serializer_class = PlaylistSerializer + + def get_queryset(self): + """The queryset is empty if the request is not authenticated. Otherwise, it contains all + the playlists.""" + + if not self.request.user.is_authenticated: + 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) diff --git a/steering/urls.py b/steering/urls.py index 194e6993..b2d518ef 100644 --- a/steering/urls.py +++ b/steering/urls.py @@ -35,6 +35,7 @@ from program.views import ( APILinkTypeViewSet, APIMusicFocusViewSet, APINoteViewSet, + APIPlaylistUsageViewSet, APIPlaylistViewSet, APIProfileViewSet, APIProgramBasicViewSet, @@ -73,6 +74,7 @@ router.register(r"settings", APIRadioSettingsViewSet, basename="settings") router.register(r"program/basic", APIProgramBasicViewSet, basename="program-basic") router.register(r"program/playout", APIProgramPlayoutViewSet, basename="program-playout") router.register(r"program/calendar", APIProgramCalendarViewSet, basename="program-calendar") +router.register(r"playlists/usage", APIPlaylistUsageViewSet, basename="playlists-usage") router.register(r"playlists", APIPlaylistViewSet, basename="playlists") urlpatterns = [ -- GitLab