From 3e5afc4f3820e70c2685ceb2272181d6d01aa977 Mon Sep 17 00:00:00 2001 From: Ross Date: Thu, 6 May 2021 21:26:02 +0100 Subject: [PATCH] . --- anatomy/models.py | 22 +++++------ anatomy/static/css/anatomy.css | 4 ++ rad/urls.py | 1 + rad/views.py | 38 ++++++++++++++++++- .../rapids/question_display_block.html | 2 + 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/anatomy/models.py b/anatomy/models.py index 6d52f4e5..09daeb86 100644 --- a/anatomy/models.py +++ b/anatomy/models.py @@ -187,18 +187,18 @@ class AnatomyQuestion(models.Model): if i.status != i.MarkOptions.UNMARKED ] ) - correct_answers = set( - [i.answer.get_compare_string() for i in self.answers.all()] - ) - half_mark_answers = set( - [i.answer.get_compare_string() for i in self.half_mark_answers.all()] - ) - incorrect_answers = set( - [i.answer.get_compare_string() for i in self.incorrect_answers.all()] - ) + #correct_answers = set( + # [i.answer.get_compare_string() for i in self.answers.all()] + #) + #half_mark_answers = set( + # [i.answer.get_compare_string() for i in self.half_mark_answers.all()] + #) + #incorrect_answers = set( + # [i.answer.get_compare_string() for i in self.incorrect_answers.all()] + #) - marked_answers = correct_answers | half_mark_answers | incorrect_answers - return marked_answers + #marked_answers = correct_answers | half_mark_answers | incorrect_answers + #return marked_answers def get_annotations(self): return self.image_annotations diff --git a/anatomy/static/css/anatomy.css b/anatomy/static/css/anatomy.css index 7b36d4c2..1e96d449 100644 --- a/anatomy/static/css/anatomy.css +++ b/anatomy/static/css/anatomy.css @@ -477,4 +477,8 @@ td.user-answer-score-2::after { .long-answer .answer-heading { font-style: italic; font-weight: bold; + } + + .proposed-answer { + color: darkblue } \ No newline at end of file diff --git a/rad/urls.py b/rad/urls.py index 2ffa4ac4..64329a60 100644 --- a/rad/urls.py +++ b/rad/urls.py @@ -57,6 +57,7 @@ urlpatterns = [ #path('', include('generic.urls')), path("feedback//", views.AddQuestionNote.as_view(), name="feedback_create"), #path("feedback/", views.AddQuestionNote.as_view(), name="feedback"), + path("feedback/answer", views.answer_suggestion_submit, name="answer_suggestion_submit"), path('api/', include(router.urls)), diff --git a/rad/views.py b/rad/views.py index 70b4c7d5..f9cb4295 100644 --- a/rad/views.py +++ b/rad/views.py @@ -29,10 +29,12 @@ from physics.models import Exam as PhysicsExam from anatomy.models import CidUserAnswer as AnatomyCidUserAnswer from anatomy.models import Exam as AnatomyExam from anatomy.models import AnatomyQuestion +from anatomy.models import Answer as AnatomyAnswer from rapids.models import CidUserAnswer as RapidsCidUserAnswer from rapids.models import Exam as RapidsExam from rapids.models import Rapid +from rapids.models import Answer as RapidAnswer from longs.models import CidUserAnswer as LongsCidUserAnswer from longs.models import Exam as LongsExam @@ -44,6 +46,8 @@ from longs.views import LongExamViews from generic.forms import QuestionNoteForm from generic.models import QuestionNote +import json + @login_required def profile(request): @@ -188,4 +192,36 @@ class AddQuestionNote(CreateView): get_object_or_404(question, pk=pk) return { "content_type" : content_type, - "object_id" : pk } \ No newline at end of file + "object_id" : pk } + +@csrf_exempt +def answer_suggestion_submit(request): + if request.is_ajax and request.method == "POST": + j = json.loads(request.body.decode()) + question_type, qid = j["qid"].split("/") + answer_string = j["answer"] + status = j["status"] + + if str(status) not in " 012": + return JsonResponse({"success": False, "error": "Invalid status"}) + + if question_type == "anatomy": + AnswerModel = AnatomyAnswer + question = AnatomyQuestion + elif question_type == "rapid": + AnswerModel = RapidAnswer + question = Rapid + else: + return JsonResponse({"success": False, "error": "Invalid question type"}) + + if AnswerModel.objects.filter(answer=answer_string): + return JsonResponse({"success": False, "error": "Answer already exists"}) + + q = get_object_or_404(question, pk=qid) + + a = AnswerModel(question=q, answer=answer_string, status=status, proposed=True) + a.save() + return JsonResponse({"success": True, "error": "Answer submited"}) + + # postExamAnswers + return JsonResponse({"success": False, "error": "Invalid data"}) \ No newline at end of file diff --git a/rapids/templates/rapids/question_display_block.html b/rapids/templates/rapids/question_display_block.html index 5ed0628c..ba258037 100755 --- a/rapids/templates/rapids/question_display_block.html +++ b/rapids/templates/rapids/question_display_block.html @@ -30,7 +30,9 @@

Scrapped: {{ question.scrapped }} (toggle)

Answers (score): {% for answer in question.answers.all %} + {{ answer }} ({{answer.status}}), + {% endfor %}