Refactor collection case navigation and question handling
- Updated links in collection_case_priors.html to point to the new collection_case_questions view. - Modified collection_case_view_take.html to display case history using the new method. - Changed collection_detail.html to include links to the new collection_case_questions view. - Added new URL pattern for collection_case_questions in urls.py. - Refactored collection_case_details view to handle question-related logic and rendering. - Introduced new CaseQuestionForm for handling question submissions. - Created new migration to add override_history and redact_history fields to CaseDetail model. - Added new templates for collection_case_details.html and collection_case_questions.html to manage case questions. - Enhanced JavaScript functionality for dynamic question management in collection_case_questions.html. - Updated useranswer model fields in shorts app to improve feedback and scoring.
This commit is contained in:
+40
-8
@@ -51,6 +51,7 @@ from .forms import (
|
||||
CaseCollectionForm,
|
||||
CaseCollectionUpdateCaseForm,
|
||||
CaseDetailForm,
|
||||
CaseQuestionForm,
|
||||
CaseDisplaySetForm,
|
||||
CaseForm,
|
||||
CaseResourceFormSet,
|
||||
@@ -2227,7 +2228,7 @@ def collection_case_priors(request, exam_id, case_id):
|
||||
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_details(request, exam_id, case_id):
|
||||
def collection_case_questions(request, exam_id, case_id):
|
||||
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
|
||||
|
||||
collection = case_detail.collection
|
||||
@@ -2244,10 +2245,10 @@ def collection_case_details(request, exam_id, case_id):
|
||||
example_form = JsonAnswerForm(
|
||||
request.POST, question_schema=case_detail.question_schema
|
||||
)
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
form = CaseQuestionForm(instance=case_detail)
|
||||
# Called if the user saves the main form
|
||||
elif request.POST.get("submit") == "save":
|
||||
form = CaseDetailForm(request.POST, instance=case_detail)
|
||||
form = CaseQuestionForm(request.POST, instance=case_detail)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
# Add any additional logic or redirection here
|
||||
@@ -2277,11 +2278,11 @@ def collection_case_details(request, exam_id, case_id):
|
||||
post_data, question_schema=case_detail.question_schema
|
||||
)
|
||||
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
form = CaseQuestionForm(instance=case_detail)
|
||||
# This shouldn't happen
|
||||
else:
|
||||
assert False
|
||||
form = CaseDetailForm(request.POST, instance=case_detail)
|
||||
form = CaseQuestionForm(request.POST, instance=case_detail)
|
||||
|
||||
else:
|
||||
post_data = request.POST.copy()
|
||||
@@ -2290,7 +2291,7 @@ def collection_case_details(request, exam_id, case_id):
|
||||
post_data, question_schema=case_detail.question_schema
|
||||
)
|
||||
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
form = CaseQuestionForm(instance=case_detail)
|
||||
pass
|
||||
# post_data = None
|
||||
|
||||
@@ -2313,7 +2314,7 @@ def collection_case_details(request, exam_id, case_id):
|
||||
# case_detail.question_answers = answers
|
||||
# example_form = JsonAnswerForm(post_data, question_schema=case_detail.question_schema)
|
||||
|
||||
# form = CaseDetailForm(instance=case_detail)
|
||||
# form = CaseQuestionForm(instance=case_detail)
|
||||
|
||||
# blank_form = JsonAnswerForm(question_schema=case_detail.question_schema)
|
||||
case_number, case_count = collection.get_index_of_case(
|
||||
@@ -2325,7 +2326,7 @@ def collection_case_details(request, exam_id, case_id):
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_detail.html",
|
||||
"atlas/collection_case_questions.html",
|
||||
{
|
||||
"case_detail": case_detail,
|
||||
"form": form,
|
||||
@@ -2339,6 +2340,36 @@ def collection_case_details(request, exam_id, case_id):
|
||||
},
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_case_details(request, exam_id, case_id):
|
||||
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
|
||||
|
||||
collection = case_detail.collection
|
||||
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
|
||||
case_number, case_count = collection.get_index_of_case(
|
||||
case_detail.case, case_count=True
|
||||
)
|
||||
|
||||
previous = collection.get_previous_case(case_detail.case)
|
||||
next = collection.get_next_case(case_detail.case)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_details.html",
|
||||
{
|
||||
"case_detail": case_detail,
|
||||
"form": form,
|
||||
"collection": collection,
|
||||
"case": case_detail.case,
|
||||
"previous": previous,
|
||||
"next": next,
|
||||
"collection_length": case_count,
|
||||
"case_number": case_number,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
def collection_mark_overview(request, pk):
|
||||
@@ -2768,6 +2799,7 @@ def collection_case_view_take(
|
||||
"form": form,
|
||||
"collection": collection,
|
||||
"case": case,
|
||||
"case_detail": case_detail,
|
||||
"series_list": series_list,
|
||||
"series_to_load": series_to_load,
|
||||
"case_number": case_number,
|
||||
|
||||
Reference in New Issue
Block a user