.
This commit is contained in:
@@ -216,6 +216,14 @@ class QuestionNote(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class CidUser(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)
|
cid = models.IntegerField(blank=True, null=True, unique=True)
|
||||||
passcode = models.CharField(blank=True, max_length=50)
|
passcode = models.CharField(blank=True, max_length=50)
|
||||||
active = models.BooleanField(default=True)
|
active = models.BooleanField(default=True)
|
||||||
@@ -225,6 +233,7 @@ class CidUser(models.Model):
|
|||||||
supervisor_email = models.EmailField(blank=True)
|
supervisor_email = models.EmailField(blank=True)
|
||||||
|
|
||||||
login_email_sent = models.BooleanField(default=False)
|
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)
|
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:
|
def check_passcode(self, passcode) -> bool:
|
||||||
return self.passcode == passcode
|
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):
|
def email_details(self, resend=False):
|
||||||
if self.login_email_sent and not resend:
|
if self.login_email_sent and not resend:
|
||||||
return False, "Already sent."
|
return False, "Already sent."
|
||||||
|
|||||||
+1
-15
@@ -124,21 +124,7 @@ def cid_scores(request, pk, passcode):
|
|||||||
sbas_exam_ids = sbas_answers.values_list("exam").distinct()
|
sbas_exam_ids = sbas_answers.values_list("exam").distinct()
|
||||||
sba_exams = SbasExam.objects.filter(id__in=sbas_exam_ids, **kwargs)
|
sba_exams = SbasExam.objects.filter(id__in=sbas_exam_ids, **kwargs)
|
||||||
|
|
||||||
available_exams = []
|
available_exams = cid_user.get_cid_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))
|
|
||||||
|
|
||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
|
|||||||
Reference in New Issue
Block a user