From 09951286e2163981b08bcccb0a08d95064aef411 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 26 Jun 2023 11:51:16 +0100 Subject: [PATCH] update check_cid_user --- generic/models.py | 13 +++++++++++-- generic/views.py | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/generic/models.py b/generic/models.py index 69c6d78e..77d6cdda 100644 --- a/generic/models.py +++ b/generic/models.py @@ -43,12 +43,14 @@ def findMiddle(input_list): else: return input_list[int(middle)] + class Modality(models.Model): modality = models.CharField(max_length=200) def __str__(self): return self.modality + class Plane(models.Model): plane = models.CharField(max_length=200, unique=True) @@ -355,10 +357,14 @@ class ExamCollectionGenericBase(models.Model): authors = [i for i in self.author.all()] return authors + def check_logged_in_user(self, request: HttpRequest): + """Helper to check if the logged in user can access the exam""" + return self.check_cid_user(request=request, user_id=request.user.id) + def check_cid_user( self, - cid: int | None, - passcode: str | None, + cid: int | None = None, + passcode: str | None = None, request: HttpRequest | None = None, user_id: int | None = None, allow_authors: bool = True, @@ -375,6 +381,9 @@ class ExamCollectionGenericBase(models.Model): if not self.valid_cid_users.exists() and not self.valid_user_users.exists(): return False + if cid is None and user_id is None: + user_id = request.user.id + # Start by checking if the logged in user can access if user_id is not None: if self.valid_user_users.filter(pk=user_id).exists(): diff --git a/generic/views.py b/generic/views.py index 1da5b42b..619fe967 100644 --- a/generic/views.py +++ b/generic/views.py @@ -1796,7 +1796,7 @@ class ExamViews(View, LoginRequiredMixin): if not exam.exam_mode: raise Http404("Packet not in exam mode") - if cid is not None and not exam.check_cid_user(cid, passcode, request): + if not exam.check_cid_user(cid, passcode, request): raise Http404("Error accessing exam") if user is not None: