From 2c8cc469f51f1fa4851b3153a52c58307e365972 Mon Sep 17 00:00:00 2001 From: Marijn Date: Tue, 20 May 2025 11:29:22 +0200 Subject: [PATCH 1/2] Fix former GiP students still reserving rooms --- website/room_reservation/views.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/website/room_reservation/views.py b/website/room_reservation/views.py index 77285b97..f73910f2 100644 --- a/website/room_reservation/views.py +++ b/website/room_reservation/views.py @@ -19,7 +19,7 @@ class BaseReservationView(View): time_window_future = timezone.timedelta(days=14) time_window_past = timezone.timedelta(days=30) - def validate(self, room, start_time, end_time, pk=None): + def validate(self, user, room, start_time, end_time, pk=None): """ Validate the input for the reservation. @@ -84,10 +84,17 @@ def load_json(self): def can_edit(self, reservation): """Return true if the reservation can be edited by the logged in user.""" return ( - self.request.user.has_perms( - ["room_reservation.change_reservation", "room_reservation.delete_reservation"], reservation - ) - or self.request.user == reservation.reservee + self.request.user == reservation.reservee + or self.request.user.is_superuser + ) + + def can_create(self): + """Return true if the reservation can be created by the logged in user.""" + current_semester = Semester.objects.get_or_create_current_semester() + + return ( + self.request.user.registration_set.filter(projects_set__semester=current_semester).exists() + or self.request.user.is_superuser ) @@ -147,6 +154,9 @@ def post(self, request, *args, **kwargs): room, start_time, end_time = self.load_json() except (KeyError, JSONDecodeError): return HttpResponseBadRequest(json.dumps({"ok": "False", "message": "Bad request"})) + + if not self.can_create(): + return JsonResponse({"ok": False, "message": "You are not allowed to make reservations."}) ok, message = self.validate(room, start_time, end_time) if not ok: From 8f77e3dac41b6f0fd1a27483fd6a4b66900b147e Mon Sep 17 00:00:00 2001 From: Marijn Date: Tue, 20 May 2025 11:31:53 +0200 Subject: [PATCH 2/2] minor fix --- website/room_reservation/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/room_reservation/views.py b/website/room_reservation/views.py index f73910f2..c85e6322 100644 --- a/website/room_reservation/views.py +++ b/website/room_reservation/views.py @@ -19,7 +19,7 @@ class BaseReservationView(View): time_window_future = timezone.timedelta(days=14) time_window_past = timezone.timedelta(days=30) - def validate(self, user, room, start_time, end_time, pk=None): + def validate(self, room, start_time, end_time, pk=None): """ Validate the input for the reservation.