add context to cloning forms
This commit is contained in:
+20
-5
@@ -49,7 +49,7 @@ from generic.decorators import user_is_cid_user_manager
|
||||
from generic.filters import CidUserFilter, ExaminationFilter
|
||||
|
||||
from generic.tables import CidUserExamTable, CidUserTable, ExaminationTable
|
||||
from generic.mixins import SuperuserRequiredMixin
|
||||
from generic.mixins import CheckCanEditMixin, SuperuserRequiredMixin
|
||||
|
||||
import zipfile
|
||||
from django.core.files.base import ContentFile
|
||||
@@ -2433,11 +2433,16 @@ class GenericViewBase:
|
||||
)
|
||||
|
||||
|
||||
class ExamCloneMixin:
|
||||
class ExamCloneMixin():
|
||||
def get_template_names(self) -> list[str]:
|
||||
return "exam_clone_form.html"
|
||||
#return super().get_template_names()
|
||||
|
||||
|
||||
def get_initial(self):
|
||||
old_object = get_object_or_404(self.model, pk=self.kwargs["exam_id"])
|
||||
|
||||
if self.request.user not in old_object.get_author_objects() and not self.request.user.is_superuser:
|
||||
if not old_object.check_user_can_edit(self.request.user):
|
||||
raise PermissionDenied() # or Http404
|
||||
|
||||
initial_data = model_to_dict(old_object, exclude=["id"])
|
||||
@@ -2458,8 +2463,18 @@ class ExamCloneMixin:
|
||||
self.exam_questions = list(questions)
|
||||
self.author = list(authors)
|
||||
|
||||
self.old_object = old_object
|
||||
|
||||
return initial_data
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context["can_edit"] = self.old_object.check_user_can_edit(self.request.user)
|
||||
context["exam"] = self.old_object
|
||||
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
object = form.save()
|
||||
# Reapply these otherwise they get lost?
|
||||
@@ -3158,7 +3173,7 @@ class ExamCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
|
||||
return kwargs
|
||||
|
||||
|
||||
class ExamUpdateBase(RevisionMixin, LoginRequiredMixin, UpdateView):
|
||||
class ExamUpdateBase(RevisionMixin, CheckCanEditMixin, LoginRequiredMixin, UpdateView):
|
||||
template_name = "exam_update_form.html"
|
||||
|
||||
def form_valid(self, form):
|
||||
@@ -3175,7 +3190,7 @@ class ExamUpdateBase(RevisionMixin, LoginRequiredMixin, UpdateView):
|
||||
return kwargs
|
||||
|
||||
|
||||
class ExamDeleteBase(RevisionMixin, DeleteView):
|
||||
class ExamDeleteBase(RevisionMixin, CheckCanEditMixin, DeleteView):
|
||||
template_name = "exam_confirm_delete.html"
|
||||
|
||||
def get_success_url(self) -> str:
|
||||
|
||||
Reference in New Issue
Block a user