Allow browsing user scores as admin

This commit is contained in:
Ross
2023-06-05 17:44:32 +01:00
parent fef378a2ac
commit ff00047110
6 changed files with 63 additions and 8 deletions
+14 -1
View File
@@ -1763,7 +1763,17 @@ class ExamViews(View, LoginRequiredMixin):
def exam_scores_user(self, request, pk):
return self.exam_scores_cid_user(request, pk)
def exam_scores_cid_user(self, request, pk, cid=None, passcode=""):
@method_decorator(user_passes_test(lambda u: u.is_superuser))
def exam_scores_user_admin(self, request, pk, user_id):
user = User.objects.get(id=user_id)
return self.exam_scores_cid_user(request, pk, user=user)
@method_decorator(user_passes_test(lambda u: u.is_superuser))
def exam_scores_cid_user_admin(self, request, pk, cid):
user = CidUser.objects.get(cid=cid)
return self.exam_scores_cid_user(request, pk, cid, user.passcode)
def exam_scores_cid_user(self, request, pk, cid=None, passcode="", user=None):
exam = get_object_or_404(self.Exam, pk=pk)
if not exam.exam_mode:
@@ -1772,6 +1782,9 @@ class ExamViews(View, LoginRequiredMixin):
if cid is not None and not exam.check_cid_user(cid, passcode, request):
raise Http404("Error accessing exam")
if user is not None:
request.user = user
questions = (
exam.exam_questions.all()
) # .prefetch_related("cid_user_answers", "answers")