Remove unused exam scores refresh function and related logic for CID user exam scores
This commit is contained in:
@@ -1045,102 +1045,6 @@ def mark2_question_marked(request, pk):
|
|||||||
return render(request, 'anatomy/partials/mark2_question_marked_fragment.html', context)
|
return render(request, 'anatomy/partials/mark2_question_marked_fragment.html', context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#@login_required
|
|
||||||
#def exam_scores_refresh(request, pk):
|
|
||||||
# exam = get_object_or_404(Exam, pk=pk)
|
|
||||||
#
|
|
||||||
# if not exam.exam_mode:
|
|
||||||
# raise Http404("Packet not in exam mode")
|
|
||||||
#
|
|
||||||
# questions = exam.exam_questions.all() # Don't worry about order here
|
|
||||||
#
|
|
||||||
# cids = UserAnswer.objects.filter(question__in=questions, exam__id=pk)
|
|
||||||
#
|
|
||||||
# # Force a score update
|
|
||||||
# for c in cids:
|
|
||||||
# c.get_answer_score(cached=False)
|
|
||||||
#
|
|
||||||
# return render(
|
|
||||||
# request,
|
|
||||||
# "anatomy/base.html",
|
|
||||||
# {
|
|
||||||
# "simple_content": "Answer scores updated",
|
|
||||||
# },
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
|
||||||
def exam_scores_cid_user(request, pk, cid, passcode):
|
|
||||||
exam = get_object_or_404(Exam, pk=pk)
|
|
||||||
|
|
||||||
if not exam.exam_mode:
|
|
||||||
raise Http404("Packet not in exam mode")
|
|
||||||
|
|
||||||
if not exam.check_cid_user(cid, passcode, request.user):
|
|
||||||
raise Http404("Error accessing exam")
|
|
||||||
|
|
||||||
questions = exam.get_questions().prefetch_related("answers")
|
|
||||||
|
|
||||||
answers_and_marks = []
|
|
||||||
answers_marks = []
|
|
||||||
answers = []
|
|
||||||
|
|
||||||
view_all_results = False
|
|
||||||
if request.user.groups.filter(name="view_all_results").exists():
|
|
||||||
view_all_results = True
|
|
||||||
|
|
||||||
for q in questions:
|
|
||||||
# Get user answer
|
|
||||||
user_answer = q.cid_user_answers.filter(cid=cid, exam__id=pk).first()
|
|
||||||
if not user_answer:
|
|
||||||
# skip if no answer
|
|
||||||
answers_marks.append(0)
|
|
||||||
answers.append("")
|
|
||||||
answer_score = 0
|
|
||||||
ans = "Not answered"
|
|
||||||
else:
|
|
||||||
ans = user_answer.answer
|
|
||||||
|
|
||||||
answer_score = user_answer.get_answer_score()
|
|
||||||
|
|
||||||
correct_answer = q.get_primary_answer()
|
|
||||||
|
|
||||||
if not exam.publish_results and not view_all_results:
|
|
||||||
correct_answer = "*****"
|
|
||||||
answer_score = 0
|
|
||||||
answers.append(ans)
|
|
||||||
answers_marks.append(answer_score)
|
|
||||||
answers_and_marks.append((ans, answer_score, correct_answer))
|
|
||||||
|
|
||||||
if "unmarked" in answers_marks:
|
|
||||||
answered = [i for i in answers_marks if type(i) == int]
|
|
||||||
total_score = sum(answered)
|
|
||||||
unmarked_number = len(answers_marks) - len(answered)
|
|
||||||
total_score = "{} ({} unmarked)".format(total_score, unmarked_number)
|
|
||||||
else:
|
|
||||||
total_score = sum(answers_marks)
|
|
||||||
|
|
||||||
max_score = len(questions) * 2
|
|
||||||
|
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"anatomy/exam_scores_user.html",
|
|
||||||
{
|
|
||||||
"exam": exam,
|
|
||||||
"cid": cid,
|
|
||||||
"passcode": passcode,
|
|
||||||
"questions": questions,
|
|
||||||
"answers": answers,
|
|
||||||
"answers_marks": answers_marks,
|
|
||||||
"total_score": total_score,
|
|
||||||
"max_score": max_score,
|
|
||||||
"answers_and_marks": answers_and_marks,
|
|
||||||
"view_all_results": view_all_results,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class AnatomyQuestionCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
|
class AnatomyQuestionCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||||
model = AnatomyQuestion
|
model = AnatomyQuestion
|
||||||
form_class = AnatomyQuestionForm
|
form_class = AnatomyQuestionForm
|
||||||
|
|||||||
Reference in New Issue
Block a user