This commit is contained in:
Ross
2021-09-28 22:45:30 +01:00
parent 8ff29ef55f
commit 758820d499
2 changed files with 16 additions and 12 deletions
+12
View File
@@ -759,3 +759,15 @@ class GenericViewBase:
authors = User.objects.all() authors = User.objects.all()
return render(request, f"{self.app_name}/author_list.html", {"authors": authors}) 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
+3 -11
View File
@@ -59,7 +59,7 @@ from django.forms.models import model_to_dict
from longs.forms import LongCreationDefaultForm from longs.forms import LongCreationDefaultForm
from longs.models import LongCreationDefault from longs.models import LongCreationDefault
from generic.views import ExamViews from generic.views import ExamCloneMixin, ExamViews
from reversion.views import RevisionMixin from reversion.views import RevisionMixin
import reversion import reversion
@@ -1074,17 +1074,9 @@ class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView):
form.instance.author.add(self.request.user.id) form.instance.author.add(self.request.user.id)
return super().form_valid(form) 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( class ExamUpdate(
RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView