a few minor changes

This commit is contained in:
Ross
2024-09-01 18:54:27 +01:00
parent 98d45fbdfc
commit cf9b514597
4 changed files with 41 additions and 11 deletions
+6
View File
@@ -992,6 +992,12 @@ class ExamBase(ExamOrCollectionGenericBase):
else:
return False
def get_user_users_with_scores(self):
user_ids = [i[2:] for i in self.user_scores if i.startswith("u/")]
return User.objects.filter(pk__in=user_ids)
def generate_user_report(self, user):
exam_text = [f"Candidate {user.first_name} [{user.email}]"]
@@ -1,16 +1,35 @@
<ul>
<h3>Email to send</h3>
<table>
<tr>
<th>Username</th>
<th>Supervisor</th>
</tr>
{% for user in users %}
<tr>
<td>{{user.username}}</td>
<td>{{user.userprofile.supervisor}}</td>
</tr>
{% endfor %}
</table>
<br/>
{% for user, status in status.items %}
<li class='{% if status.0 %}text-success{% else %}text-warning{% endif %}'>
{{user.username}} {% if status.0 %}success{% else %}failed [{{status.1}}]{% endif %} ({{status.2}})
<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-confirm="Are you sure you wish to resend all emails?"
hx-trigger="click, click from:#resend-all"
>Resend</button>
</li>
{% empty %}
No emails sent.
<p>No emails sent.</p>
{% endfor %}
</ul>
<button id="resend-all">Resend all</button>
@@ -131,7 +131,10 @@
{% block breakdown %}{% endblock breakdown %}
<details>
<details
hx-get="{% url exam.app_name|add:':exam_report_email_status' exam_id=exam.pk %}"
hx-trigger="revealed"
hx-target="#user-details">
<summary>Email results</summary>
User results emailed: {{exam.exam_results_emailed|default:"Never"}}<br/>
<button id="email-results-button"
@@ -149,7 +152,8 @@
>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>
hx-trigger="click"
hx-target="#user-details">Refresh email status</button>
<p>Note: currently only works with registered users</p>
<div id="user-details"></div>
</details>
+8 -7
View File
@@ -374,7 +374,7 @@ class ExamViews(View, LoginRequiredMixin):
question_type,
normalise_score=None,
):
self.Exam = exam
self.Exam: ExamBase = exam
self.Question = question
self.Answer = answer
self.UserAnswer = cid_user_answer
@@ -720,11 +720,11 @@ class ExamViews(View, LoginRequiredMixin):
if not self.check_user_access(request.user, exam_id):
raise PermissionDenied
users = [i[2:] for i in exam.user_scores if i.startswith("u/")]
users = exam.get_user_users_with_scores()
status = {}
for u in users:
user = User.objects.get(pk=u)
for user in users:
#user = User.objects.get(pk=u)
user_exam = exam.get_or_create_cid_user_exam(user_user=user)
if user_exam.results_emailed_status:
status[user] = json.loads(user_exam.results_emailed_status)
@@ -736,6 +736,7 @@ class ExamViews(View, LoginRequiredMixin):
"exam": exam,
"status": status,
"app_name": self.app_name,
"users": users,
},
)
return JsonResponse(status)
@@ -770,13 +771,13 @@ class ExamViews(View, LoginRequiredMixin):
# We only need to send emails to those who have scores
# (who should be in exam.user_scores)
if users is None:
users = [i[2:] for i in exam.user_scores if i.startswith("u/")]
users = exam.get_user_users_with_scores()
time = timezone.now()
email_results = {}
for u in users:
user = User.objects.get(pk=u)
for user in users:
#user = User.objects.get(pk=u)
user_exam = exam.get_or_create_cid_user_exam(user_user=user)
if unsent_only and user_exam.results_emailed_status: