From 0aa0cd1c061c6825bad06e8ded6f9235724e6eae Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Wed, 11 Sep 2024 15:50:33 -0400 Subject: [PATCH] feat: provide some data on bad requests --- program/views.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/program/views.py b/program/views.py index fa41eb85..b740b9ea 100644 --- a/program/views.py +++ b/program/views.py @@ -1115,8 +1115,9 @@ class APIScheduleViewSet(viewsets.ModelViewSet): if request.method == "PATCH": # only these fields can be updated without generating conflicts allowed = {"default_playlist_id", "is_repetition", "last_date"} + update_fields = set(request.data.get("schedule").keys()) - if set(request.data.get("schedule").keys()).issubset(allowed): + if update_fields.issubset(allowed): schedule = self.get_object() default_playlist_id = request.data.get("schedule").get("default_playlist_id") @@ -1148,14 +1149,19 @@ class APIScheduleViewSet(viewsets.ModelViewSet): TimeSlot.objects.filter(schedule=schedule, start__gt=last_end).delete() else: - return Response(status=status.HTTP_400_BAD_REQUEST) + data = {"last_date": "This field cannot be updated to this date"} + + return Response(data, status=status.HTTP_400_BAD_REQUEST) schedule.save() serializer = ScheduleSerializer(schedule) return Response(serializer.data) else: - return Response(status=status.HTTP_400_BAD_REQUEST) + bad_fields = update_fields.difference(allowed) + data = {field: "This field cannot be updated with PATCH" for field in bad_fields} + + return Response(data, status=status.HTTP_400_BAD_REQUEST) # Only allow updating when with the `schedule` JSON object if "schedule" not in request.data: -- GitLab