From f068cf6ca0e16e19898e09ec8867f726d736ec2d Mon Sep 17 00:00:00 2001 From: Ross Date: Fri, 17 Dec 2021 16:15:16 +0000 Subject: [PATCH] . --- generic/models.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ rad/views.py | 16 +--------------- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/generic/models.py b/generic/models.py index 0a3eed4e..e5a3d6da 100644 --- a/generic/models.py +++ b/generic/models.py @@ -216,6 +216,14 @@ class QuestionNote(models.Model): class CidUser(models.Model): + EXAM_TYPES = ( + ("Physics", "physics_exams"), + ("Rapids", "rapid_exams"), + ("SBAs", "sba_exams"), + ("Anatomy", "anatomy_exams"), + ("Longs", "longs_exams"), + ) + cid = models.IntegerField(blank=True, null=True, unique=True) passcode = models.CharField(blank=True, max_length=50) active = models.BooleanField(default=True) @@ -225,6 +233,7 @@ class CidUser(models.Model): supervisor_email = models.EmailField(blank=True) login_email_sent = models.BooleanField(default=False) + results_email_sent = models.BooleanField(default=False) group = models.ForeignKey("CidUserGroup", on_delete=models.SET_NULL, null=True) @@ -234,6 +243,42 @@ class CidUser(models.Model): def check_passcode(self, passcode) -> bool: return self.passcode == passcode + def get_cid_exams(self): + available_exams = [] + + for n, t in self.EXAM_TYPES: + exam_rel = getattr(self, t) + if exam_rel.exists(): + exams = exam_rel.filter(exam_mode=True) + available_exams.append((n, exams)) + + return available_exams + + def email_results(self, resend=False): + if self.results_email_sent and not resend: + return False, "Already sent." + + msg = f""" + """ + + html_msg = f"""""" + + try: + send_mail( + f"{self.group} results", + msg, + "test@xkjq.uk", + [self.email, self.supervisor_email], + fail_silently=False, + html_message=html_msg + ) + except SMTPException as e: + return False, e + + self.results_email_sent = True + self.save() + return True, "" + def email_details(self, resend=False): if self.login_email_sent and not resend: return False, "Already sent." diff --git a/rad/views.py b/rad/views.py index 50fb54c6..8e1df77c 100644 --- a/rad/views.py +++ b/rad/views.py @@ -124,21 +124,7 @@ def cid_scores(request, pk, passcode): sbas_exam_ids = sbas_answers.values_list("exam").distinct() sba_exams = SbasExam.objects.filter(id__in=sbas_exam_ids, **kwargs) - available_exams = [] - - exam_types = ( - ("Physics", "physics_exams"), - ("Rapids", "rapid_exams"), - ("SBAs", "sba_exams"), - ("Anatomy", "anatomy_exams"), - ("Longs", "longs_exams"), - ) - - for n, t in exam_types: - exam_rel = getattr(cid_user, t) - if exam_rel.exists(): - exams = exam_rel.filter(exam_mode=True) - available_exams.append((n, exams)) + available_exams = cid_user.get_cid_exams() return render( request,