From 758820d499147f44fb0fa8194321974ce0fbba75 Mon Sep 17 00:00:00 2001 From: Ross Date: Tue, 28 Sep 2021 22:45:30 +0100 Subject: [PATCH] . --- generic/views.py | 14 +++++++++++++- longs/views.py | 14 +++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/generic/views.py b/generic/views.py index 76b5ca4a..2a09ccfb 100644 --- a/generic/views.py +++ b/generic/views.py @@ -758,4 +758,16 @@ class GenericViewBase: def author_list(self, request): authors = User.objects.all() - return render(request, f"{self.app_name}/author_list.html", {"authors": authors}) \ No newline at end of file + return render(request, f"{self.app_name}/author_list.html", {"authors": authors}) + + +class ExamCloneMixin(): + def get_initial(self): + old_object = get_object_or_404(self.model, pk=self.kwargs["exam_id"]) + initial_data = model_to_dict(old_object, exclude=["id"]) + + questions = old_object.exam_questions.all().values_list("id", flat=True) + + initial_data["exam_questions"] = list(questions) + + return initial_data \ No newline at end of file diff --git a/longs/views.py b/longs/views.py index e8502414..d55217b4 100755 --- a/longs/views.py +++ b/longs/views.py @@ -59,7 +59,7 @@ from django.forms.models import model_to_dict from longs.forms import LongCreationDefaultForm from longs.models import LongCreationDefault -from generic.views import ExamViews +from generic.views import ExamCloneMixin, ExamViews from reversion.views import RevisionMixin import reversion @@ -1074,17 +1074,9 @@ class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView): form.instance.author.add(self.request.user.id) return super().form_valid(form) -class ExamClone(ExamCreate): +class ExamClone(ExamCloneMixin, ExamCreate): + """Clone exam view""" - def get_initial(self): - old_object = get_object_or_404(self.model, pk=self.kwargs["exam_id"]) - initial_data = model_to_dict(old_object, exclude=["id"]) - - questions = old_object.exam_questions.all().values_list("id", flat=True) - - initial_data["exam_questions"] = list(questions) - - return initial_data class ExamUpdate( RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView