From e46575fb9ad50720d82904e74e0c5262143b5827 Mon Sep 17 00:00:00 2001 From: Ross Date: Sun, 12 Dec 2021 11:34:43 +0000 Subject: [PATCH] . --- generic/models.py | 9 +++++++++ physics/views.py | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/generic/models.py b/generic/models.py index 7adf2cbb..03914582 100644 --- a/generic/models.py +++ b/generic/models.py @@ -127,6 +127,15 @@ class ExamBase(models.Model): """Returns a comma seperated text list of authors""" authors = [i for i in self.author.all()] return authors + + def check_cid_user(self, cid, passcode): + if self.valid_users.exists(): + user = self.valid_users.filter(cid=cid).first() + + if not user or user.passcode != passcode: + return False + + return True class NoteType(models.Model): diff --git a/physics/views.py b/physics/views.py index bd7a72e6..29844a19 100644 --- a/physics/views.py +++ b/physics/views.py @@ -323,13 +323,8 @@ def exam_take(request, pk, sk, cid, passcode=None): if not exam.active: raise Http404("Exam not found") - if exam.valid_users.exists(): - user = exam.valid_users.filter(cid=cid).first() - - if not user: - raise Http404("Exam not found") - if user.passcode != passcode: - raise Http404("Invalid passcode") + if not exam.check_cid_user(cid, passcode): + raise Http404("Error accessing exam") question = exam.exam_questions.all()[sk]