From e3aab096b9ca7f906b193f6b899d589694bcdf5e Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Fri, 13 Sep 2024 16:30:56 -0400 Subject: [PATCH] fix: handle missing schedule fields and provide data on bad requests --- program/views.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/program/views.py b/program/views.py index 7ccb56b0..bb90583d 100644 --- a/program/views.py +++ b/program/views.py @@ -1186,12 +1186,25 @@ class APIScheduleViewSet(viewsets.ModelViewSet): them including notes. """ + required_schedule_fields = {"end_time", "first_date", "rrule_id", "start_time"} + 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) + schedule_fields = set(self.request.data["schedule"].keys()) + + if missing_fields := required_schedule_fields.difference(schedule_fields): + data = { + "schedule": { + field: "This field is required in a PUT request" for field in missing_fields + } + } + + return Response(data, status=status.HTTP_400_BAD_REQUEST) + schedule = self.get_object() try: -- GitLab