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
+17 -4
View File
@@ -128,9 +128,17 @@ def cid_results(request, cid):
},
)
@user_passes_test(lambda u: u.is_superuser)
def user_scores_admin(request, user_id):
try:
user = User.objects.get(id=user_id)
except User.DoesNotExist:
raise Http404("Cid not found")
return user_scores(request, user=user)
@login_required
def user_scores(request):
def user_scores(request, user=None):
# exam = get_object_or_404(Exam, pk=pk)
# cid = pk
@@ -140,6 +148,10 @@ def user_scores(request):
# if not cid_user or cid_user.passcode != passcode:
# raise Http404("CID / Passcode combination not found")
# print(cid_user.passcode)
admin = True
if user is None:
user = request.user
admin = False
# questions = exam.exam_questions.all()
EXAM_ANSWER_MAP = {
@@ -154,7 +166,7 @@ def user_scores(request):
exams = []
for exam_type in EXAM_ANSWER_MAP:
UserAnswer, Exam = EXAM_ANSWER_MAP[exam_type]
exam_answers = UserAnswer.objects.filter(user=request.user)
exam_answers = UserAnswer.objects.filter(user=user)
exam_ids = exam_answers.values_list("exam").distinct()
exams_to_add = Exam.objects.filter(id__in=exam_ids, **kwargs)
if exams_to_add:
@@ -173,7 +185,7 @@ def user_scores(request):
available_exams = []
for n, t in USER_EXAM_TYPES:
exam_rel = getattr(request.user, t)
exam_rel = getattr(user, t)
if exam_rel.exists():
temp_exams = exam_rel.filter(exam_mode=True, archive=False).order_by("name")
available_exams.append((n, temp_exams))
@@ -191,9 +203,10 @@ def user_scores(request):
# "sba_exams": sba_exams,
"all_exams": exams,
# "passcode": passcode,
"cid_user": request.user,
"cid_user": user,
"available_exams": available_exams,
"case_collections": [], # case_collections,
"admin": admin,
},
)