tidy up some longs related stuff
This commit is contained in:
+45
-16
@@ -75,7 +75,15 @@ from django.forms.models import model_to_dict
|
||||
from longs.forms import LongCreationDefaultForm
|
||||
from longs.models import LongCreationDefault
|
||||
|
||||
from generic.views import AuthorRequiredMixin, ExamCloneMixin, ExamCreateBase, ExamDeleteBase, ExamUpdateBase, ExamViews, SeriesImagesZipViewBase
|
||||
from generic.views import (
|
||||
AuthorRequiredMixin,
|
||||
ExamCloneMixin,
|
||||
ExamCreateBase,
|
||||
ExamDeleteBase,
|
||||
ExamUpdateBase,
|
||||
ExamViews,
|
||||
SeriesImagesZipViewBase,
|
||||
)
|
||||
from reversion.views import RevisionMixin
|
||||
import reversion
|
||||
|
||||
@@ -271,7 +279,10 @@ def long_clone(request, pk):
|
||||
new_item.pk = None # autogen a new pk (item_id)
|
||||
# new_item.name = "Copy of " + new_item.name #need to change uniques
|
||||
|
||||
if request.user not in new_item.get_author_objects() and not request.user.is_superuser:
|
||||
if (
|
||||
request.user not in new_item.get_author_objects()
|
||||
and not request.user.is_superuser
|
||||
):
|
||||
raise PermissionDenied() # or Http404
|
||||
|
||||
form = LongForm(request.POST or None, instance=new_item)
|
||||
@@ -413,10 +424,14 @@ class LongCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(LongCreateBase, self).get_context_data(**kwargs)
|
||||
|
||||
queryset = LongSeries.objects.select_related("modality", "examination", "plane").prefetch_related("long").filter(pk=62)#.values()
|
||||
queryset = (
|
||||
LongSeries.objects.select_related("modality", "examination", "plane")
|
||||
.prefetch_related("long")
|
||||
.filter(pk=62)
|
||||
) # .values()
|
||||
print("TEST")
|
||||
print(queryset)
|
||||
#queryset = LongSeries.objects.all()
|
||||
# queryset = LongSeries.objects.all()
|
||||
if self.request.POST:
|
||||
context["series_formset"] = SeriesFormSet(
|
||||
self.request.POST, self.request.FILES, queryset=queryset
|
||||
@@ -624,7 +639,6 @@ class LongSeriesView(LoginRequiredMixin, SingleTableMixin, FilterView):
|
||||
filterset_class = LongSeriesFilter
|
||||
|
||||
|
||||
|
||||
@user_is_long_marker
|
||||
@reversion.create_revision()
|
||||
def mark_answer_override(request, exam_id, question_number, cid):
|
||||
@@ -704,6 +718,7 @@ def mark_answer(request, exam_id, question_number, answer_id, override=False):
|
||||
|
||||
# Extract score from form and save it to the object
|
||||
answer.score = form.cleaned_data["score"]
|
||||
answer.candidate_feedback = form.cleaned_data["candidate_feedback"]
|
||||
answer.save()
|
||||
|
||||
if "next" in request.POST:
|
||||
@@ -724,7 +739,12 @@ def mark_answer(request, exam_id, question_number, answer_id, override=False):
|
||||
# return redirect("longs:mark", pk=exam_id, sk=n - 1)
|
||||
|
||||
else:
|
||||
form = MarkLongQuestionSingleForm(initial={"score": answer.score})
|
||||
form = MarkLongQuestionSingleForm(
|
||||
initial={
|
||||
"score": answer.score,
|
||||
"candidate_feedback": answer.candidate_feedback,
|
||||
}
|
||||
)
|
||||
|
||||
else:
|
||||
if request.method == "POST":
|
||||
@@ -794,7 +814,10 @@ def mark_answer(request, exam_id, question_number, answer_id, override=False):
|
||||
marks = set(answer.mark.values_list("score", flat=True))
|
||||
if len(marks) > 1 or override:
|
||||
discrepancy_form = MarkLongQuestionSingleForm(
|
||||
initial={"score": answer.score}
|
||||
initial={
|
||||
"score": answer.score,
|
||||
"candidate_feedback": answer.candidate_feedback,
|
||||
}
|
||||
)
|
||||
|
||||
return render(
|
||||
@@ -838,9 +861,7 @@ def mark(request, exam_id, sk):
|
||||
|
||||
user_answers = question.cid_user_answers.filter(exam__id=exam_id)
|
||||
|
||||
unmarked_count = user_answers.filter(
|
||||
score=UserAnswer.ScoreOptions.UNMARKED
|
||||
).count()
|
||||
unmarked_count = user_answers.filter(score=UserAnswer.ScoreOptions.UNMARKED).count()
|
||||
|
||||
if exam.double_mark:
|
||||
marker_unmarked_count = question.get_unmarked_user_answer_count(
|
||||
@@ -872,9 +893,9 @@ def mark(request, exam_id, sk):
|
||||
)
|
||||
|
||||
|
||||
#@login_required
|
||||
#@user_is_long_marker
|
||||
#def exam_scores_all(request, pk):
|
||||
# @login_required
|
||||
# @user_is_long_marker
|
||||
# def exam_scores_all(request, pk):
|
||||
# exam = get_object_or_404(Exam, pk=pk)
|
||||
#
|
||||
# questions = exam.exam_questions.all()
|
||||
@@ -981,7 +1002,7 @@ def mark(request, exam_id, sk):
|
||||
# )
|
||||
|
||||
|
||||
#def exam_scores_cid_user(request, pk, cid, passcode):
|
||||
# def exam_scores_cid_user(request, pk, cid, passcode):
|
||||
# exam = get_object_or_404(Exam, pk=pk)
|
||||
#
|
||||
# # TODO:Need some kind of test for cid
|
||||
@@ -1125,6 +1146,7 @@ def long_series_order_upload_filename(request, pk):
|
||||
|
||||
GenericExamViews = ExamViews(Exam, Long, None, UserAnswer, "longs", "long")
|
||||
|
||||
|
||||
class ExamCreate(ExamCreateBase):
|
||||
model = Exam
|
||||
form_class = ExamForm
|
||||
@@ -1138,17 +1160,24 @@ class ExamUpdate(ExamUpdateBase, AuthorOrCheckerRequiredMixin):
|
||||
class ExamDelete(AuthorOrCheckerRequiredMixin, ExamDeleteBase):
|
||||
model = Exam
|
||||
|
||||
|
||||
class ExamClone(ExamCloneMixin, ExamCreate):
|
||||
"""Clone exam view"""
|
||||
|
||||
|
||||
class ExamAuthorUpdate(RevisionMixin, CheckCanEditMixin, LoginRequiredMixin, AuthorRequiredMixin, UpdateView):
|
||||
class ExamAuthorUpdate(
|
||||
RevisionMixin,
|
||||
CheckCanEditMixin,
|
||||
LoginRequiredMixin,
|
||||
AuthorRequiredMixin,
|
||||
UpdateView,
|
||||
):
|
||||
model = Exam
|
||||
form_class = ExamAuthorForm
|
||||
template_name = "author_form.html"
|
||||
|
||||
|
||||
#class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
|
||||
# class ExamViewSet(RevisionMixin, viewsets.ModelViewSet):
|
||||
# queryset = Exam.objects.all().order_by("name")
|
||||
# serializer_class = ExamSerializer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user