improve case quesitons
This commit is contained in:
+101
-33
@@ -1568,50 +1568,87 @@ def collection_case_details(request, exam_id, case_id):
|
||||
case_detail = CaseDetail.objects.get(case=case_id, collection=exam_id)
|
||||
|
||||
|
||||
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)
|
||||
if request.method == 'POST':
|
||||
|
||||
# Called if the user saves the correct answer form
|
||||
if 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)
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
# Called if the user saves the main form
|
||||
elif 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
|
||||
#example_form = JsonAnswerForm(request.POST, case_detail=case_detail)
|
||||
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)
|
||||
case_detail.question_answers = answers
|
||||
case_detail.save()
|
||||
example_form = JsonAnswerForm(post_data, case_detail=case_detail)
|
||||
|
||||
form = CaseDetailForm(instance=case_detail)
|
||||
# This shouldn't happen
|
||||
else:
|
||||
assert False
|
||||
form = CaseDetailForm(request.POST, instance=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)
|
||||
post_data = request.POST.copy()
|
||||
post_data["json_answer"]= json.dumps(case_detail.question_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)
|
||||
pass
|
||||
#post_data = None
|
||||
|
||||
blank_form = JsonAnswerForm(case_detail=case_detail)
|
||||
#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)
|
||||
# case_detail.question_answers = answers
|
||||
#example_form = JsonAnswerForm(post_data, case_detail=case_detail)
|
||||
|
||||
#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, "example_form": example_form,
|
||||
"blank_form": blank_form}
|
||||
}
|
||||
)
|
||||
|
||||
@user_is_collection_author_or_atlas_editor
|
||||
@@ -2497,3 +2534,34 @@ class SeriesAuthorUpdate(RevisionMixin, AuthorRequiredMixin, UpdateView):
|
||||
context = super(SeriesAuthorUpdate, self).get_context_data(**kwargs)
|
||||
context["collection"] = context["object"]
|
||||
return context
|
||||
|
||||
def question_schemas_preset(request):
|
||||
schemas = [
|
||||
json.dumps({'type': 'object', 'title': 'Questions', 'required': ['laterality', 'diagnosis'], 'properties': {'test': {'type': 'string', 'title': 'test string', 'description': 'What side is the lesion on?'}, 'diagnosis': {'enum': ['Meningioma', 'Schwannoma', 'Neurofibroma', 'Ependymoma'], 'type': 'string', 'title': 'Diagnosis', 'description': 'What is the diagnosis?'}, 'laterality': {'enum': ['left', 'right'], 'type': 'string', 'title': 'Laterality', 'widget': 'radio', 'description': 'What side is the lesion on?'}, 'laterality (copy 2)': {'enum': ['left', 'right'], 'type': 'string', 'title': 'Lateralityaoue', 'widget': 'radio', 'description': 'What side is the lesion on?'}}}),
|
||||
]
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/question_schemas_preset.html",
|
||||
{
|
||||
"schemas": schemas,
|
||||
},
|
||||
)
|
||||
|
||||
def collection_question_schemas(request, exam_id: int):
|
||||
collection = get_object_or_404(CaseCollection, pk=exam_id)
|
||||
|
||||
questions = collection.cases.all().prefetch_related()
|
||||
|
||||
case_details = CaseDetail.objects.filter(
|
||||
case__in=questions, collection=collection
|
||||
).prefetch_related("case").order_by("sort_order")
|
||||
|
||||
return render(
|
||||
request,
|
||||
"atlas/collection_question_schemas.html",
|
||||
{
|
||||
"collection": collection,
|
||||
"case_details": case_details,
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user