From dc35e3d83059bb4251b92f4350d7ecf21fcb7e18 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Fri, 9 Aug 2024 20:35:20 -0400 Subject: [PATCH] feat: add example requests & responses for create schedule view --- program/views.py | 140 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/program/views.py b/program/views.py index 9a16798b..5257e209 100644 --- a/program/views.py +++ b/program/views.py @@ -771,10 +771,74 @@ class APIRRuleViewSet(viewsets.ModelViewSet): @extend_schema_view( create=extend_schema( + examples=[ + OpenApiExample( + "Request to create a new schedule", + request_only=True, + value={ + "schedule": { + "endTime": "09:00:00", + "startTime": "08:00:00", + "rruleId": 1, + "showId": 10, + "firstDate": "2024-08-12", + } + }, + ), + OpenApiExample( + "Request to simulate the creation of a new schedule", + request_only=True, + value={ + "schedule": { + "endTime": "09:00:00", + "dryrun": True, + "startTime": "08:00:00", + "rruleId": 1, + "showId": 10, + "firstDate": "2024-08-12", + } + }, + ), + OpenApiExample( + "Request to create a new schedule and solve a collision", + request_only=True, + value={ + "schedule": { + "endTime": "09:00:00", + "dryrun": True, + "startTime": "08:00:00", + "rruleId": 1, + "showId": 10, + "firstDate": "2024-08-12", + }, + "solutions": {"2024081211000004002024081212000004001": "ours"}, + }, + ), + ], summary="Create a new schedule.", request=ScheduleCreateUpdateRequestSerializer, responses={ status.HTTP_201_CREATED: OpenApiResponse( + examples=[ + OpenApiExample( + "Successful creation if a new schedule", + response_only=True, + value={ + "addBusinessDaysOnly": False, + "addDaysNo": None, + "byWeekday": None, + "defaultPlaylistId": None, + "endTime": "09:00:00", + "firstDate": "2024-08-12", + "id": 11, + "isRepetition": False, + "lastDate": None, + "rruleId": 1, + "showId": 10, + "startTime": "08:00:00", + }, + ) + ], response=ScheduleResponseSerializer, description=( "Signals the successful creation of the schedule and of the projected " @@ -782,6 +846,29 @@ class APIRRuleViewSet(viewsets.ModelViewSet): ), ), status.HTTP_202_ACCEPTED: OpenApiResponse( + examples=[ + OpenApiExample( + "Simulated creation of a new schedule", + response_only=True, + value={ + "create": [ + { + "end": "2024-08-12T09:00:00-04:00", + "id": None, + "memo": "", + "noteId": None, + "playlistId": None, + "repetitionOfId": None, + "scheduleId": None, + "showId": 10, + "start": "2024-08-12T08:00:00-04:00", + } + ], + "delete": [], + "update": [], + }, + ) + ], response=ScheduleDryRunResponseSerializer, description=( "Returns the list of timeslots that would be created, updated and deleted if " @@ -817,6 +904,59 @@ class APIRRuleViewSet(viewsets.ModelViewSet): ), ), status.HTTP_409_CONFLICT: OpenApiResponse( + examples=[ + OpenApiExample( + "Creation of a new schedule would create in a collision", + response_only=True, + value={ + "notes": {}, + "playlists": {}, + "projected": [ + { + "collisions": [ + { + "end": "2024-08-12 17:00:00+00:00", + "memo": "", + "noteId": 694, + "playlistId": None, + "scheduleId": 7, + "showId": 6, + "showName": "EINS", + "start": "2024-08-12 14:00:00+00:00", + "timeslotId": 694, + } + ], + "end": "2024-08-12 12:00:00-04:00", + "error": None, + "hash": "2024081211000004002024081212000004001", + "solutionChoices": [ + "ours-end", + "theirs", + "ours-start", + "ours", + "ours-both", + ], + "start": "2024-08-12 11:00:00-04:00", + } + ], + "schedule": { + "addBusinessDaysOnly": False, + "addDaysNo": None, + "byWeekday": None, + "defaultPlaylistId": None, + "endTime": "12:00:00", + "firstDate": "2024-08-12", + "id": None, + "isRepetition": False, + "lastDate": None, + "rruleId": 1, + "showId": 10, + "startTime": "11:00:00", + }, + "solutions": {"2024081211000004002024081212000004001": ""}, + }, + ) + ], response=ScheduleConflictResponseSerializer, description=dedent( """ -- GitLab