diff --git a/generic/views.py b/generic/views.py index 6c540fbe..1917d1a0 100644 --- a/generic/views.py +++ b/generic/views.py @@ -354,7 +354,9 @@ class ExamViews(View, LoginRequiredMixin): # We give some users the ability to filter by authors class ExtraExamFilter(BasicExamFilter): - author = ModelMultipleChoiceFilter(queryset=User.objects.all(), null_label="No author") + author = ModelMultipleChoiceFilter( + queryset=User.objects.all(), null_label="No author" + ) self.ExtraExamFilter = ExtraExamFilter @@ -476,7 +478,6 @@ class ExamViews(View, LoginRequiredMixin): def exam_toggle_archived(self, request, pk): print("TOGGLE ARCHIVED", request.POST) if request.method == "POST": - if not self.check_user_edit_access(request.user): data = {"status": "error, insufficient permission"} return JsonResponse(data, status=400) @@ -500,7 +501,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(login_required) def exam_toggle_results_published(self, request, pk): if request.method == "POST": - if not self.check_user_edit_access(request.user): data = {"status": "error, insufficient permission"} return JsonResponse(data, status=400) @@ -525,7 +525,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(login_required) def exam_toggle_active(self, request, pk): if request.method == "POST": - if not self.check_user_edit_access(request.user): data = {"status": "error, insufficient permission"} return JsonResponse(data, status=400) @@ -576,7 +575,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(login_required) def exam_list(self, request, all=False): - if not self.check_user_access(request.user): # raise PermissionDenied exam_list = self.Exam.objects.filter(author__id=request.user.id).order_by( @@ -1041,7 +1039,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(login_required) def exam_json_edit(self, request, pk): if request.method == "POST": - if request.user.groups.filter(name="cid_user_manager").exists(): # This may give more permissions than we actually want pass @@ -1236,7 +1233,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(login_required) def index(self, request): - # self.check_user_access(request.user, exam.pk) if ( @@ -1260,7 +1256,6 @@ class ExamViews(View, LoginRequiredMixin): exams = self.Exam.objects.filter(author__id=request.user.id) filter = self.BasicExamFilter(request.GET, queryset=exams) - return render( request, "generic/exam_index.html", @@ -1382,7 +1377,6 @@ class ExamViews(View, LoginRequiredMixin): @method_decorator(csrf_exempt) def post_exam_answers(self, request): if request.method == "POST": - n = 0 for answer in json.loads(request.POST.get("answers")): @@ -1444,7 +1438,6 @@ class ExamViews(View, LoginRequiredMixin): match self.app_name: case "rapids": - # Normal answers are just posted with the answer "Normal" normal = False if posted_answer == "Normal": @@ -1566,7 +1559,6 @@ class ExamViews(View, LoginRequiredMixin): return self.exam_json_unbased(request, pk, cid, passcode) def exam_json(self, request, pk, cid=None, passcode=None): - exam: ExamBase = get_object_or_404(self.Exam, pk=pk) # Check access (for logged in users when inactive) @@ -1643,7 +1635,11 @@ class ExamViews(View, LoginRequiredMixin): """ exam: ExamBase = get_object_or_404(self.Exam, pk=pk) - if exam.exam_mode and not exam.active and not self.check_user_access(request.user, pk): + if ( + exam.exam_mode + and not exam.active + and not self.check_user_access(request.user, pk) + ): raise Http404("No available exam") # Check access for users @@ -1719,7 +1715,6 @@ class ExamViews(View, LoginRequiredMixin): if not exam.check_cid_user(cid, passcode, request, user_id): raise Http404("No available exam") - return redirect("{}:question_json_unbased".format(self.app_name), pk=sk) redirect() @@ -1823,7 +1818,6 @@ class ExamViews(View, LoginRequiredMixin): } if self.normalise_score is not None: - normalised_score = self.normalise_score(total_score) template_context["normalised_score"] = normalised_score @@ -1948,7 +1942,6 @@ class ExamViews(View, LoginRequiredMixin): user_scores_normalised = {} user_answer_count = {} for user in user_answers_marks: - if self.app_name in ("rapids", "anatomy", "sbas"): user_scores[user] = sum( [i for i in user_answers_marks[user] if i != "unmarked"] @@ -2364,7 +2357,6 @@ def users_bulk_delete_supervisors(request): @user_is_cid_user_manager def users_bulk_edit_grade(request): - if request.htmx.trigger == "bulk-edit-grade-button": user_grades = UserGrades.objects.all() @@ -2848,7 +2840,6 @@ def create_user(request, context=None): ) try: - user_profile = UserProfile.objects.get(user=new_user) user_profile.peninsula_trainee = True diff --git a/longs/models.py b/longs/models.py index a5c347da..1b50142f 100644 --- a/longs/models.py +++ b/longs/models.py @@ -885,6 +885,18 @@ class CidUserAnswer(models.Model): def get_absolute_url(self): return reverse("longs:user_answer_view", kwargs={"pk": self.pk}) + def get_candidate_name(self) -> str: + if self.cid is not None: + return str(self.cid) + else: + return self.user.username + + def get_candidate_masked(self) -> str: + if self.cid is not None: + return str(self.cid) + else: + return str(self.user.id) + @reversion.register class AnswerMarks(models.Model): diff --git a/longs/templates/longs/mark_answer.html b/longs/templates/longs/mark_answer.html index f9343d19..fcd9d636 100644 --- a/longs/templates/longs/mark_answer.html +++ b/longs/templates/longs/mark_answer.html @@ -38,22 +38,22 @@ {% if not next_unmarked_id and not unmarked %}
Description: {{ question.description }}
@@ -125,11 +125,11 @@ {% endif %} - {% if previous_cid %} - Previous + {% if previous_answer_id %} + Previous candidate {% endif %} - {% if next_cid %} - Next candidate + {% if next_answer_id %} + Next candidate {% endif %} {% endblock %} diff --git a/longs/templates/longs/mark_question_double_overview.html b/longs/templates/longs/mark_question_double_overview.html index 7a7a8026..1782a297 100644 --- a/longs/templates/longs/mark_question_double_overview.html +++ b/longs/templates/longs/mark_question_double_overview.html @@ -20,7 +20,7 @@