Add CID user support in collection history and reset answers functionality
This commit is contained in:
+54
-3
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user