improve suggest answers (and fix some other issues)

This commit is contained in:
Ross
2025-01-20 09:54:56 +00:00
parent 9cb83b62d2
commit 0ca17c23b5
10 changed files with 114 additions and 21 deletions
+41
View File
@@ -44,6 +44,7 @@ from .forms import (
MarkAnatomyQuestionForm,
AnatomyQuestionForm,
ExamForm,
SuggestIncorrectAnswerForm,
)
from .models import (
AnatomyQuestion,
@@ -345,6 +346,10 @@ def mark(request, exam_pk, sk, unmarked_exam_answers_only=True, review=False):
incorrect_answers = question.answers.filter(status=Answer.MarkOptions.INCORRECT)
answer_suggest_incorrect: list = []
words_present: set = set()
words_present_in_correct: set = set()
if review:
for ans in unmarked_user_answers:
# duplicated from user answer model....
@@ -367,6 +372,22 @@ def mark(request, exam_pk, sk, unmarked_exam_answers_only=True, review=False):
answer_suggest_incorrect.append(ans)
break
for ans in correct_answers:
answer_words = set(ans.get_constituent_words())
words_present.update(answer_words)
words_present_in_correct.update(answer_words)
for ans in half_mark_answers:
answer_words = set(ans.get_constituent_words())
words_present.update(answer_words)
words_present_in_correct.update(answer_words)
for ans in incorrect_answers:
answer_words = set(ans.get_constituent_words())
words_present.update(answer_words)
words_suggest_incorrect = words_present - words_present_in_correct - set(question.answer_suggest_incorrect)
return render(
request,
"anatomy/mark.html",
@@ -385,6 +406,7 @@ def mark(request, exam_pk, sk, unmarked_exam_answers_only=True, review=False):
"incorrect_answers": incorrect_answers,
"unmarked_exam_answers_only": unmarked_exam_answers_only,
"answer_suggest_incorrect": answer_suggest_incorrect,
"words_suggest_incorrect": words_suggest_incorrect,
},
)
@@ -748,6 +770,25 @@ class AnatomyQuestionView(LoginRequiredMixin, SingleTableMixin, FilterView):
# return qs
@user_is_author_or_anatomy_checker
def question_suggest_incorrect_answers(request, pk):
question = get_object_or_404(AnatomyQuestion, pk=pk)
if request.method == "POST":
form = SuggestIncorrectAnswerForm(request.POST, instance=question)
if form.is_valid():
obj = form.save()
obj.save()
return render(request, "anatomy/question_detail.html#suggest-incorrect-form", {"question": question})
return HttpResponse("Invalid")
else:
form = SuggestIncorrectAnswerForm(instance=question)
return render(request, "anatomy/suggest_incorrect.html", {"form": form, "question": question})
return HttpResponse("Error", status=400)
@user_is_author_or_anatomy_checker
def question_save_annotation(request, pk):