diff --git a/program/views.py b/program/views.py index 7b512271ce2e10a758b1e2699f5c8eb41d738380..541bd91b3edf3f21877728535617c62545a07e8a 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()