.
This commit is contained in:
@@ -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."
|
||||
|
||||
+1
-15
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user