From 17330681a20653b2948a4421ec17f1fccb0f2472 Mon Sep 17 00:00:00 2001 From: Ross Date: Mon, 29 Dec 2025 09:44:29 +0000 Subject: [PATCH] Refactor ExamCollection views to enforce author requirements and improve access control --- generic/views.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/generic/views.py b/generic/views.py index 6bfe8dce..b270c1ba 100644 --- a/generic/views.py +++ b/generic/views.py @@ -5734,7 +5734,7 @@ class SupervisorList(CidManagerRequiredMixin, SingleTableMixin, FilterView): filterset_class = SupervisorFilter -class ExamCollectionList(ListView): +class ExamCollectionList(LoginRequiredMixin, ListView): model = ExamCollection def get_queryset(self): @@ -5816,11 +5816,11 @@ class ExamCollectionList(ListView): return qs -class ExamCollectionDetail(DetailView, AuthorRequiredMixin): +class ExamCollectionDetail(AuthorRequiredMixin, DetailView): model = ExamCollection -class ExamCollectionEdit(UpdateView, AuthorRequiredMixin): +class ExamCollectionEdit(AuthorRequiredMixin, UpdateView): model = ExamCollection form_class = ExamCollectionForm @@ -5839,7 +5839,7 @@ class ExamCollectionEdit(UpdateView, AuthorRequiredMixin): return context -class ExamCollectionCreate(CreateView, AuthorRequiredMixin): +class ExamCollectionCreate(AuthorRequiredMixin, CreateView): model = ExamCollection form_class = ExamCollectionForm @@ -5857,7 +5857,7 @@ class ExamCollectionCreate(CreateView, AuthorRequiredMixin): return context -class ExamCollectionClone(CreateView, AuthorRequiredMixin): +class ExamCollectionClone(AuthorRequiredMixin, CreateView): model = ExamCollection template_name = "generic/examcollection_clone_form.html" form_class = ExamCollectionCloneForm @@ -5971,7 +5971,7 @@ class ExamCollectionClone(CreateView, AuthorRequiredMixin): return HttpResponseRedirect(object.get_absolute_url()) -class ExamCollectionDelete(DeleteView, AuthorRequiredMixin): +class ExamCollectionDelete(AuthorRequiredMixin, DeleteView): model = ExamCollection template_name = "confirm_delete.html" success_url = reverse_lazy("generic:examcollection_list") @@ -5991,7 +5991,7 @@ class ExaminationDelete(RevisionMixin, SuperuserRequiredMixin, DeleteView): success_url = reverse_lazy("generic:examination_view") -class ExaminationUpdate(UpdateView, SuperuserRequiredMixin): +class ExaminationUpdate(SuperuserRequiredMixin, UpdateView): model = Examination form_class = ExaminationForm