.
This commit is contained in:
+4
-3
@@ -316,9 +316,10 @@ class ExamBase(models.Model):
|
||||
exam_text.append(f"Stats\n{'-'*len('Stats')}\n{stats}")
|
||||
|
||||
|
||||
exam_text.append(
|
||||
f"Answers breakdown: {callstate}"
|
||||
)
|
||||
if self.app_name == "rapids":
|
||||
exam_text.append(
|
||||
f"Answers breakdown: {callstate}"
|
||||
)
|
||||
|
||||
msg = "\n\n".join(exam_text)
|
||||
|
||||
|
||||
@@ -5,10 +5,12 @@
|
||||
<button hx-get="{% url exam.app_name|add:':exam_user_report_email' exam_id=exam.pk user_id=user.pk %}"
|
||||
hx-prompt="Enter any additional emails"
|
||||
hx-confirm="Are you sure you wish to delete your account?"
|
||||
hx-trigger="click, click from:#test"
|
||||
hx-trigger="click, click from:#resend-all"
|
||||
>Resend</button>
|
||||
|
||||
</li>
|
||||
{% empty %}
|
||||
No emails sent.
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<button id="test">Test</button>
|
||||
<button id="resend-all">Resend all</button>
|
||||
@@ -90,8 +90,19 @@
|
||||
<details>
|
||||
<summary>Email results</summary>
|
||||
User results emailed: {{exam.exam_results_emailed|default:"Never"}}<br/>
|
||||
<button id="email-results-button" title="Email results to users and their supervisors">Email user results</button>
|
||||
<button id="email-unsent-results-button" title="Email results to users and their supervisors">Email unsent user results</button>
|
||||
<button id="email-results-button"
|
||||
title="Email results to users and their supervisors"
|
||||
hx-get="{% url exam.app_name|add:':exam_report_email' exam_id=exam.pk %}"
|
||||
hx-target="#user-details"
|
||||
hx-confirm="This will email results, please make sure scores have been refreshed before continuing"
|
||||
hx-prompt="Please enter an additional email to send to (user and supervisor will automatically be used if available) if required"
|
||||
>Email user results</button>
|
||||
<button id="email-unsent-results-button" title="Email results to users and their supervisors"
|
||||
hx-get="{% url exam.app_name|add:':exam_report_email_unsent' exam_id=exam.pk %}"
|
||||
hx-target="#user-details"
|
||||
hx-confirm="This will email results, please make sure scores have been refreshed before continuing"
|
||||
hx-prompt="Please enter an additional email to send to (user and supervisor will automatically be used if available) if required"
|
||||
>Email unsent user results</button>
|
||||
<button id="email-results-check-button" title="Check the status of emailed results"
|
||||
hx-get="{% url exam.app_name|add:':exam_report_email_status' exam_id=exam.pk %}"
|
||||
hx-target="#user-details">Check email status</button>
|
||||
@@ -100,50 +111,5 @@
|
||||
</details>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
$(document).ready(() => {
|
||||
$("#email-results-button").click((evt) => {
|
||||
if (confirm("This will email results, please make sure scores have been refreshed before continuing")) {
|
||||
|
||||
let additional_email = prompt("Please enter an additional email to send to (user and supervisor will automatically be used if available) if required");
|
||||
|
||||
let url = "{% url exam.app_name|add:':exam_report_email' exam_id=exam.pk %}";
|
||||
|
||||
if ( additional_email != null ) {
|
||||
url = url + "?additional_email="+encodeURI(additional_email)
|
||||
}
|
||||
|
||||
window.location = url;
|
||||
|
||||
}
|
||||
evt.preventDefault();
|
||||
|
||||
})
|
||||
$("#email-unsent-results-button").click((evt) => {
|
||||
if (confirm("This will email results, please make sure scores have been refreshed before continuing")) {
|
||||
|
||||
let additional_email = prompt("Please enter an additional email to send to (user and supervisor will automatically be used if available) if required");
|
||||
|
||||
let url = "{% url exam.app_name|add:':exam_report_email_unsent' exam_id=exam.pk %}";
|
||||
|
||||
if ( additional_email != null ) {
|
||||
url = url + "?additional_email="+encodeURI(additional_email)
|
||||
}
|
||||
|
||||
window.location = url;
|
||||
|
||||
}
|
||||
evt.preventDefault();
|
||||
|
||||
})
|
||||
//$("#email-results-check-button").click((evt) => {
|
||||
// window.location = "{% url exam.app_name|add:':exam_report_email_status' exam_id=exam.pk %}";
|
||||
//})
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
+22
-7
@@ -593,7 +593,8 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
for u in users:
|
||||
user = User.objects.get(pk=u)
|
||||
user_exam = exam.get_or_create_cid_user_exam(user_user=user)
|
||||
status[user] = json.loads(user_exam.results_emailed_status)
|
||||
if user_exam.results_emailed_status:
|
||||
status[user] = json.loads(user_exam.results_emailed_status)
|
||||
|
||||
return render(
|
||||
request,
|
||||
@@ -620,7 +621,11 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
if not self.check_user_access(request.user, exam_id):
|
||||
raise PermissionDenied
|
||||
|
||||
additional_email = request.GET.get("additional_email", "")
|
||||
additional_email = False
|
||||
if request.htmx.prompt is not None:
|
||||
additional_email = request.htmx.prompt
|
||||
|
||||
print(f"{additional_email=}")
|
||||
|
||||
# check addition email is valid
|
||||
if additional_email:
|
||||
@@ -646,19 +651,29 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
continue
|
||||
|
||||
if additional_email:
|
||||
email_results[user.pk] = exam.email_user_results(
|
||||
email_results[user] = exam.email_user_results(
|
||||
user, additional_emails=[additional_email]
|
||||
)
|
||||
else:
|
||||
email_results[user.pk] = exam.email_user_results(user)
|
||||
email_results[user.pk].append(f"{time}")
|
||||
user_exam.results_emailed_status = json.dumps(email_results[user.pk])
|
||||
email_results[user] = exam.email_user_results(user)
|
||||
email_results[user].append(f"{time}")
|
||||
user_exam.results_emailed_status = json.dumps(email_results[user])
|
||||
|
||||
user_exam.save()
|
||||
|
||||
exam.exam_results_emailed = time
|
||||
exam.save()
|
||||
|
||||
return render(
|
||||
request,
|
||||
"generic/exam_report_email_status.html",
|
||||
{
|
||||
"exam": exam,
|
||||
"status": email_results,
|
||||
"app_name": self.app_name,
|
||||
},
|
||||
)
|
||||
|
||||
return JsonResponse(email_results)
|
||||
|
||||
@method_decorator(login_required)
|
||||
@@ -1343,7 +1358,7 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
if not existing_answers:
|
||||
if uid:
|
||||
ans = self.CidUserAnswer(
|
||||
answer=posted_answer, uid=User.objects.get(id=uid)
|
||||
answer=posted_answer, user=User.objects.get(id=uid)
|
||||
)
|
||||
else:
|
||||
ans = self.CidUserAnswer(answer=posted_answer, cid=cid)
|
||||
|
||||
Reference in New Issue
Block a user