Allow browsing user scores as admin
This commit is contained in:
+17
-4
@@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user