This commit is contained in:
Ross
2022-06-29 22:01:45 +01:00
parent 09d9c42a59
commit 9699d20192
7 changed files with 58 additions and 8 deletions
+29 -3
View File
@@ -560,6 +560,20 @@ class ExamViews(View, LoginRequiredMixin):
},
)
@method_decorator(login_required)
def exam_user(self, request, exam_id, user_id):
exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
if request.user not in exam.author.all():
if not self.check_user_access(request.user, exam_id):
raise PermissionDenied
user = User.objects.get(pk=user_id)
user_exam = exam.get_or_create_cid_user_exam(user_user=user)
return JsonResponse(model_to_dict(user_exam))
@method_decorator(login_required)
def exam_report_email_status(self, request, exam_id):
exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
@@ -578,9 +592,12 @@ class ExamViews(View, LoginRequiredMixin):
return JsonResponse(status)
@method_decorator(login_required)
def exam_report_email_unsent(self, request, exam_id):
return self.exam_report_email(request, exam_id, unsent_only=True)
@method_decorator(login_required)
def exam_report_email(self, request, exam_id):
def exam_report_email(self, request, exam_id, unsent_only=False):
exam = get_object_or_404(self.Exam.objects.prefetch_related("author"), pk=exam_id)
if request.user not in exam.author.all():
@@ -606,13 +623,22 @@ class ExamViews(View, LoginRequiredMixin):
email_results = {}
for u 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:
continue
#print(user, user_exam.results_emailed_status)
#if json.loads(user_exam.results_emailed_status)[0] == True:
# continue
if additional_email:
email_results[user.username] = 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])
user_exam = exam.get_or_create_cid_user_exam(user_user=user)
user_exam.results_emailed_status = json.dumps(email_results[user.username]) + f" {time}"
user_exam.save()
exam.exam_results_emailed = time