improve json editing
This commit is contained in:
+66
-3
@@ -47,6 +47,7 @@ from .forms import (
|
||||
ConditionAutocompleteForm,
|
||||
ConditionForm,
|
||||
FindingForm,
|
||||
JsonAnswerForm,
|
||||
ResourceForm,
|
||||
SelfReviewForm,
|
||||
SeriesAuthorForm,
|
||||
@@ -1566,18 +1567,51 @@ def collection_take_start(request, pk):
|
||||
def collection_case_details(request, exam_id, case_id):
|
||||
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
|
||||
if request.method == 'POST' and request.POST.get('submit') == 'answer':
|
||||
#answers = request.POST
|
||||
case_detail.question_answers = json.loads(request.POST.get("json_answer"))
|
||||
case_detail.save()
|
||||
example_form = JsonAnswerForm(request.POST, case_detail=case_detail)
|
||||
|
||||
else:
|
||||
post_data = None
|
||||
|
||||
if case_detail.question_schema is not None and case_detail.question_answers is not None:
|
||||
question_keys = set(case_detail.question_schema["properties"].keys())
|
||||
answer_keys = set(case_detail.question_answers.keys())
|
||||
|
||||
answers = {}
|
||||
for key, value in case_detail.question_answers.items():
|
||||
if key in question_keys:
|
||||
answers[key] = value
|
||||
|
||||
diff = question_keys - answer_keys
|
||||
|
||||
for key in diff:
|
||||
answers[key] = ""
|
||||
|
||||
|
||||
post_data = request.POST.copy()
|
||||
post_data["json_answer"]= json.dumps(answers)
|
||||
example_form = JsonAnswerForm(post_data, case_detail=case_detail)
|
||||
|
||||
if request.method == 'POST' and request.POST.get('submit') == 'save':
|
||||
form = CaseDetailForm(request.POST, instance=case_detail)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
# Add any additional logic or redirection here
|
||||
else:
|
||||
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
|
||||
|
||||
blank_form = JsonAnswerForm(case_detail=case_detail)
|
||||
|
||||
|
||||
return render(
|
||||
request, "atlas/collection_case_detail.html", {"case_detail": case_detail,
|
||||
"form": form}
|
||||
"form": form, "example_form": example_form,
|
||||
"blank_form": blank_form}
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
@@ -1790,6 +1824,35 @@ def collection_take_overview(
|
||||
},
|
||||
)
|
||||
|
||||
def collection_case_view_take_user_answers(request, pk: int, case_number: int):
|
||||
return collection_case_view_take_answers(request, pk, case_number)
|
||||
|
||||
def collection_case_view_take_answers(
|
||||
request, pk: int, case_number: int, cid=None, passcode=None
|
||||
):
|
||||
"""
|
||||
"""
|
||||
collection = get_object_or_404(CaseCollection, pk=pk)
|
||||
|
||||
collection.check_user_can_take(cid, passcode, request.user)
|
||||
|
||||
case, case_count = collection.get_case_by_index(case_number, case_count=True)
|
||||
|
||||
cid_user_exam = collection.get_or_create_cid_user_exam(
|
||||
cid=cid, user_user=request.user
|
||||
)
|
||||
|
||||
case_detail = CaseDetail.objects.get(case=case, collection=collection)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_case_view_take_answers.html",
|
||||
{
|
||||
"collection": collection,
|
||||
"case": case,
|
||||
"case_detail": case_detail,
|
||||
},
|
||||
)
|
||||
|
||||
def collection_case_view_take_user(request, pk: int, case_number: int):
|
||||
return collection_case_view_take(request, pk, case_number)
|
||||
|
||||
Reference in New Issue
Block a user