improve stats handling
This commit is contained in:
+29
-8
@@ -759,7 +759,7 @@ class ExamBase(ExamCollectionGenericBase):
|
||||
|
||||
stats_max_possible = models.FloatField(default=0)
|
||||
|
||||
# stats_graph = models.TextField(default=0)
|
||||
stats_graph = models.TextField(default=0)
|
||||
|
||||
user_scores = models.JSONField(default=dict)
|
||||
|
||||
@@ -868,29 +868,50 @@ class ExamBase(ExamCollectionGenericBase):
|
||||
stats = self.get_exam_stats(name=False)
|
||||
exam_text.append(f"Stats\n{'-'*len('Stats')}\n{stats}")
|
||||
|
||||
rapids_extra = ""
|
||||
if self.app_name == "rapids":
|
||||
exam_text.append(f"Answers breakdown: {callstate}")
|
||||
rapids_extra = f"Answers breakdown: {callstate}"
|
||||
exam_text.append(rapids_extra)
|
||||
|
||||
msg = "\n\n".join(exam_text)
|
||||
|
||||
return msg
|
||||
html_msg = f"""
|
||||
<p>Candidate: {user.first_name} [{user.email}]</p>
|
||||
<h2>{exam_name}</h2>
|
||||
|
||||
<h3>Results</h3>
|
||||
Score: {user_score} / {int(self.stats_max_possible)} ({percentage})
|
||||
|
||||
<h3>Stats</h3>
|
||||
{stats}<br/>
|
||||
<a href="{settings.REMOTE_URL}{reverse("{}:exam_stats".format(self.app_name), args=(self.pk,))}">View all stats (including graph) here</a>
|
||||
|
||||
"""
|
||||
if self.app_name == "rapids":
|
||||
html_msg =f"{html_msg}<br/>{rapids_extra}"
|
||||
|
||||
return msg, html_msg
|
||||
|
||||
def email_user_results(self, user, resend=False, additional_emails=None):
|
||||
# if self.results_email_sent and not resend:
|
||||
# return False, "Already sent."
|
||||
|
||||
# Get a list of taken exams
|
||||
msg = self.generate_user_report(user)
|
||||
msg, html_msg = self.generate_user_report(user)
|
||||
|
||||
if not user.email:
|
||||
return [False, "User has no email"]
|
||||
|
||||
emails = [user.email]
|
||||
|
||||
supervisor_email = user.userprofile.supervisor.email
|
||||
extra = ""
|
||||
|
||||
if supervisor_email:
|
||||
if user.userprofile.supervisor is not None:
|
||||
supervisor_email = user.userprofile.supervisor.email
|
||||
emails.append(supervisor_email)
|
||||
else:
|
||||
extra = "No supervisor"
|
||||
|
||||
|
||||
if additional_emails is not None:
|
||||
emails.extend(additional_emails)
|
||||
@@ -902,14 +923,14 @@ class ExamBase(ExamCollectionGenericBase):
|
||||
"no-reply@penracourses.org.uk",
|
||||
emails,
|
||||
fail_silently=False,
|
||||
# html_message=html_msg,
|
||||
html_message=html_msg,
|
||||
)
|
||||
except SMTPException as e:
|
||||
return [False, e]
|
||||
|
||||
# self.results_email_sent = True
|
||||
# self.save()
|
||||
return [True, ""]
|
||||
return [True, extra]
|
||||
|
||||
|
||||
class ExamUserStatus(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user