From 298378725c9e30057fdd04fa6424c97f1913c75f Mon Sep 17 00:00:00 2001
From: Konrad Mohrfeldt <konrad.mohrfeldt@farbdev.org>
Date: Thu, 17 Mar 2022 13:29:38 +0100
Subject: [PATCH] refactor: tidy up APIScheduleViewSet

* TODOs are no longer part of the method description
* normalized queryset handling
* consistent formatting of method descriptions.
---
 program/views.py | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/program/views.py b/program/views.py
index 14ef2306..2ef6198a 100644
--- a/program/views.py
+++ b/program/views.py
@@ -365,25 +365,24 @@ class APIShowViewSet(viewsets.ModelViewSet):
 
 class APIScheduleViewSet(viewsets.ModelViewSet):
     """
-    /schedules/ returns all schedules (GET)
-    /schedules/{pk} returns the given schedule (GET)
-    /shows/{show_pk}/schedules returns schedules of the show (GET, POST)
-    /shows/{show_pk}/schedules/{pk} returns schedules by its ID (GET, PUT, DELETE)
+    Returns a list of schedules.
 
-    Only superusers may create and update schedules
+    Only superusers may create and update schedules.
     """
 
-    queryset = Schedule.objects.none()
+    queryset = Schedule.objects.all()
     serializer_class = ScheduleSerializer
     permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
 
     def get_queryset(self):
-        show_pk = get_values(self.kwargs, "show_pk")
+        queryset = super().get_queryset()
 
+        # subroute filters
+        show_pk = get_values(self.kwargs, "show_pk")
         if show_pk:
-            return Schedule.objects.filter(show=show_pk)
+            queryset = queryset.filter(show=show_pk)
 
-        return Schedule.objects.all()
+        return queryset
 
     def retrieve(self, request, *args, **kwargs):
         pk, show_pk = get_values(self.kwargs, "pk", "show_pk")
@@ -402,8 +401,7 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
         """
         Create a schedule, generate timeslots, test for collisions and resolve them including notes
 
-        Only superusers may add schedules
-        TODO: Perhaps directly insert into database if no conflicts found
+        Only superusers may add schedules.
         """
 
         if not request.user.is_superuser:
@@ -417,6 +415,7 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
             return Response(status=status.HTTP_400_BAD_REQUEST)
 
         # First create submit -> return projected timeslots and collisions
+        # TODO: Perhaps directly insert into database if no conflicts found
         if "solutions" not in request.data:
             return Response(
                 Schedule.make_conflicts(request.data["schedule"], pk, show_pk),
@@ -435,9 +434,10 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
 
     def update(self, request, *args, **kwargs):
         """
-        Update a schedule, generate timeslots, test for collisions and resolve them including notes
+        Update a schedule, generate timeslots, test for collisions and resolve
+        them including notes.
 
-        Only superusers may update schedules
+        Only superusers may update schedules.
         """
 
         if not request.user.is_superuser:
@@ -488,8 +488,9 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
 
     def destroy(self, request, *args, **kwargs):
         """
-        Delete a schedule
-        Only superusers may delete schedules
+        Delete a schedule.
+
+        Only superusers may delete schedules.
         """
 
         if not request.user.is_superuser:
-- 
GitLab