.
This commit is contained in:
+11
-5
@@ -42,7 +42,12 @@ import json
|
||||
import statistics
|
||||
import plotly.express as px
|
||||
|
||||
from generic.views import AuthorRequiredMixin, ExamCloneMixin, ExamViews, GenericViewBase
|
||||
from generic.views import (
|
||||
AuthorRequiredMixin,
|
||||
ExamCloneMixin,
|
||||
ExamViews,
|
||||
GenericViewBase,
|
||||
)
|
||||
|
||||
from rest_framework import viewsets, permissions
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
@@ -368,9 +373,7 @@ def exam_take(request, pk, sk, cid, passcode):
|
||||
# return True, None
|
||||
|
||||
|
||||
GenericExamViews = ExamViews(
|
||||
Exam, Question, None, CidUserAnswer, "physics", "physics"
|
||||
)
|
||||
GenericExamViews = ExamViews(Exam, Question, None, CidUserAnswer, "physics", "physics")
|
||||
|
||||
GenericViews = GenericViewBase("physics", Question, CidUserAnswer, Exam)
|
||||
|
||||
@@ -391,10 +394,13 @@ class ExamClone(AuthorOrCheckerRequiredMixin, ExamCloneMixin, ExamCreate):
|
||||
"""Clone exam view"""
|
||||
|
||||
|
||||
class ExamAuthorUpdate(RevisionMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView):
|
||||
class ExamAuthorUpdate(
|
||||
RevisionMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView
|
||||
):
|
||||
model = Exam
|
||||
form_class = ExamAuthorForm
|
||||
|
||||
|
||||
class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
|
||||
model = Exam
|
||||
template_name = "exam_confirm_delete.html"
|
||||
|
||||
+19
-8
@@ -42,7 +42,12 @@ from .models import (
|
||||
CidUserAnswer,
|
||||
)
|
||||
|
||||
from generic.views import AuthorRequiredMixin, ExamCloneMixin, ExamViews, GenericViewBase
|
||||
from generic.views import (
|
||||
AuthorRequiredMixin,
|
||||
ExamCloneMixin,
|
||||
ExamViews,
|
||||
GenericViewBase,
|
||||
)
|
||||
|
||||
from reversion.views import RevisionMixin
|
||||
|
||||
@@ -509,7 +514,6 @@ class RapidView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||
filterset_class = RapidFilter
|
||||
|
||||
|
||||
|
||||
@login_required
|
||||
def mark_all(request, exam_pk, sk):
|
||||
return mark(request, exam_pk, sk, unmarked_exam_answers_only=False)
|
||||
@@ -673,7 +677,6 @@ def mark(request, exam_pk, sk, unmarked_exam_answers_only=True, review=False):
|
||||
)
|
||||
|
||||
|
||||
|
||||
def exam_scores_cid_user(request, pk, cid, passcode):
|
||||
exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
@@ -682,7 +685,9 @@ def exam_scores_cid_user(request, pk, cid, passcode):
|
||||
|
||||
# TODO:Need some kind of test for cid
|
||||
|
||||
questions = exam.exam_questions.all()#.prefetch_related("cid_user_answers", "answers")
|
||||
questions = (
|
||||
exam.exam_questions.all()
|
||||
) # .prefetch_related("cid_user_answers", "answers")
|
||||
|
||||
# cid_user_answers = list(CidUserAnswer.objects.filter(cid=cid, exam__id=pk).prefetch_related("question"))
|
||||
|
||||
@@ -762,9 +767,7 @@ class QuestionDelete(AuthorOrCheckerRequiredMixin, DeleteView):
|
||||
success_url = reverse_lazy("rapids:rapid_view")
|
||||
|
||||
|
||||
GenericExamViews = ExamViews(
|
||||
Exam, Rapid, Answer, CidUserAnswer, "rapids", "rapid"
|
||||
)
|
||||
GenericExamViews = ExamViews(Exam, Rapid, Answer, CidUserAnswer, "rapids", "rapid")
|
||||
|
||||
|
||||
class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
@@ -793,18 +796,24 @@ class ExamUpdate(
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
class ExamAuthorUpdate(RevisionMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView):
|
||||
|
||||
class ExamAuthorUpdate(
|
||||
RevisionMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView
|
||||
):
|
||||
model = Exam
|
||||
form_class = ExamAuthorForm
|
||||
|
||||
|
||||
class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView):
|
||||
model = Exam
|
||||
template_name = "exam_confirm_delete.html"
|
||||
success_url = reverse_lazy("rapids:index")
|
||||
|
||||
|
||||
class UserAnswerView(LoginRequiredMixin, DetailView):
|
||||
model = CidUserAnswer
|
||||
|
||||
|
||||
class UserAnswerTableView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||
model = CidUserAnswer
|
||||
table_class = RapidUserAnswerTable
|
||||
@@ -921,6 +930,7 @@ class RapidLateralityViewSet(
|
||||
|
||||
GenericViews = GenericViewBase("rapids", Rapid, CidUserAnswer, Exam)
|
||||
|
||||
|
||||
@user_is_author_or_rapid_checker
|
||||
def question_anonymise_dicom(request, pk):
|
||||
question = get_object_or_404(Rapid, pk=pk)
|
||||
@@ -929,6 +939,7 @@ def question_anonymise_dicom(request, pk):
|
||||
|
||||
return redirect("rapids:question_detail", pk=pk)
|
||||
|
||||
|
||||
@user_is_author_or_rapid_checker
|
||||
def question_save_annotation(request, pk):
|
||||
if request.is_ajax() and request.method == "POST":
|
||||
|
||||
Reference in New Issue
Block a user