Add CID user support in collection history and reset answers functionality

This commit is contained in:
Ross
2025-10-13 11:28:07 +01:00
parent fa08f9cf76
commit 32d8430f94
8 changed files with 222 additions and 58 deletions
+54 -3
View File
@@ -2102,9 +2102,11 @@ def collection_history(request, exam_id: int):
"sort_order"
)
userexams = collection.get_cid_user_exams()
userexams = collection.get_user_exams()
cidexams = collection.get_cid_exams()
print(userexams)
print("useruserexams:", userexams)
print("cidexams:", cidexams)
return render(
request,
@@ -2114,6 +2116,7 @@ def collection_history(request, exam_id: int):
"casesdetails": casedetails,
"can_edit": True,
"userexams": userexams,
"cidexams": cidexams,
},
)
@@ -2147,6 +2150,32 @@ def collection_history_user(request, exam_id: int, user_pk: int):
)
@user_is_collection_author_or_atlas_editor
def collection_history_ciduser(request, exam_id: int, cid: int):
collection = get_object_or_404(CaseCollection, pk=exam_id)
casedetails = CaseDetail.objects.filter(
collection=collection,
).order_by("sort_order")
print(casedetails)
user_answers = [
(casedetail, casedetail.get_cid_answers(cid)) for casedetail in casedetails
]
return render(
request,
"atlas/collection_history_user.html",
{
"collection": collection,
"user": cid,
"casedetails": casedetails,
"user_answers": user_answers,
},
)
def collection_take_start(request, pk, cid=None, passcode=None):
@@ -2173,7 +2202,7 @@ def collection_take_start(request, pk, cid=None, passcode=None):
cid_exam = None
if collection.collection_type == "REV" or valid_user:
cid_exam = collection.get_cid_user_exams(user_user=request.user).first()
cid_exam = collection.get_cid_and_user_exams(user_user=request.user).first()
template_variables = {
"collection": collection,
@@ -3522,6 +3551,7 @@ def collection_reset_answers_user_list(request, exam_id: int):
raise Http404("Invalid request")
@user_is_collection_author_or_atlas_editor
def collection_reset_answers_user(request, exam_id: int, user_id: int):
if request.htmx:
collection = get_object_or_404(CaseCollection, pk=exam_id)
@@ -3542,6 +3572,27 @@ def collection_reset_answers_user(request, exam_id: int, user_id: int):
else:
raise Http404("Invalid request")
@user_is_collection_author_or_atlas_editor
def collection_reset_answers_ciduser(request, exam_id: int, cid: int):
if request.htmx:
collection = get_object_or_404(CaseCollection, pk=exam_id)
# Select all case details (answers are linked to these)
case_details = collection.casedetail_set.all().prefetch_related()
# Delete all answers
for case in case_details:
cid_answers = case.cidreportanswer_set.filter(cid=cid)
cid_answers.delete()
collection.cid_users.filter(cid=cid).delete()
collection.exam_user_status.filter(cid_user_exam__cid__pk=cid).delete()
return HttpResponse(f"CID [{cid}] answers deleted")
else:
raise Http404("Invalid request")
def collection_reset_answers(request, exam_id: int):
if request.htmx: