This commit is contained in:
Ross
2022-07-04 16:34:21 +01:00
parent 87a47a1082
commit eb602616b8
13 changed files with 143 additions and 22 deletions
+26 -15
View File
@@ -588,8 +588,17 @@ 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.username] = user_exam.results_emailed_status
status[user] = json.loads(user_exam.results_emailed_status)
return render(
request,
"generic/exam_report_email_status.html",
{
"exam": exam,
"status": status,
"app_name": self.app_name,
},
)
return JsonResponse(status)
@method_decorator(login_required)
@@ -597,7 +606,7 @@ class ExamViews(View, LoginRequiredMixin):
return self.exam_report_email(request, exam_id, unsent_only=True)
@method_decorator(login_required)
def exam_report_email(self, request, exam_id, unsent_only=False):
def exam_report_email(self, request, exam_id, unsent_only=False, users=None):
exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
if request.user not in exam.author.all():
@@ -616,7 +625,8 @@ class ExamViews(View, LoginRequiredMixin):
# We only need to send emails to those who have scores
# (who should be in exam.user_scores)
users = [i[2:] for i in exam.user_scores if i.startswith("u/")]
if users is None:
users = [i[2:] for i in exam.user_scores if i.startswith("u/")]
time = timezone.now()
@@ -631,11 +641,11 @@ class ExamViews(View, LoginRequiredMixin):
if additional_email:
email_results[user.username] = exam.email_user_results(user, additional_emails=[additional_email])
email_results[user.pk] = exam.email_user_results(user, additional_emails=[additional_email])
else:
email_results[user.username] = exam.email_user_results(user)
email_results[user.username].append(f" {time}")
user_exam.results_emailed_status = json.dumps(email_results[user.username])
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])
user_exam.save()
@@ -646,20 +656,21 @@ class ExamViews(View, LoginRequiredMixin):
@method_decorator(login_required)
def exam_user_report_email(self, request, exam_id, user_id):
return self.exam_report_email(request, exam_id, users=[user_id])
# print(Exam.objects.all())
# exams = Exam.objects.all()
# print("test", Exam.objects.all().get(id=pk))
exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
#exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
u = get_object_or_404(User, pk=user_id)
#u = get_object_or_404(User, pk=user_id)
if request.user not in exam.author.all():
if not self.check_user_access(request.user, exam_id):
raise PermissionDenied
#if request.user not in exam.author.all():
# if not self.check_user_access(request.user, exam_id):
# raise PermissionDenied
res = exam.email_user_results(u)
#res = exam.email_user_results(u)
return HttpResponse(res)
#return HttpResponse(res)
@method_decorator(login_required)
def exam_user_report(self, request, exam_id, user_id):
@@ -1654,7 +1665,7 @@ class ExamViews(View, LoginRequiredMixin):
exam.stats_min = min(user_scores_list)
exam.stats_max = max(user_scores_list)
exam.stats_graph = fig_html
#exam.stats_graph = fig_html
user_data = {}
for u in cids: