a few minor changes
This commit is contained in:
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user