From 161d963d4c58302e50c2c2acd73d77d76cad6a82 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Wed, 11 Sep 2024 17:32:01 -0400
Subject: [PATCH] refactor: extract validate_update_request

---
 program/views.py | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/program/views.py b/program/views.py
index 7b512271..541bd91b 100644
--- a/program/views.py
+++ b/program/views.py
@@ -1103,18 +1103,22 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
 
         return Response(resolution, status=status.HTTP_201_CREATED)
 
+    def validate_update_request(self):
+        """Validate that the request has the change_schedule permission and includes `schedule`."""
+
+        if not self.request.user.has_perm("program.change_schedule"):
+            return Response(status=status.HTTP_401_UNAUTHORIZED)
+
+        if "schedule" not in self.request.data:
+            return Response(status=status.HTTP_400_BAD_REQUEST)
+
     def update(self, request, *args, **kwargs):
         """
         Update a schedule, generate timeslots, test for collisions and resolve
         them including notes.
         """
 
-        if not self.request.user.has_perm("program.change_schedule"):
-            return Response(status=status.HTTP_401_UNAUTHORIZED)
-
-        # Only allow updating when with the `schedule` JSON object
-        if "schedule" not in request.data:
-            return Response(status=status.HTTP_400_BAD_REQUEST)
+        self.validate_update_request()
 
         schedule = self.get_object()
 
-- 
GitLab