diff --git a/physics/templates/physics/exam_overview.html b/physics/templates/physics/exam_overview.html index e4b15d85..4db21fde 100644 --- a/physics/templates/physics/exam_overview.html +++ b/physics/templates/physics/exam_overview.html @@ -4,11 +4,11 @@ {% load thumbnail %}
- {% comment %} {% if can_edit %} + {% if can_edit %} Edit Delete Clone - {% endif %} {% endcomment %} + {% endif %} {% if request.user.is_superuser %} Admin Edit {% endif %} diff --git a/physics/urls.py b/physics/urls.py index b0e84d90..f94ccd2b 100644 --- a/physics/urls.py +++ b/physics/urls.py @@ -24,6 +24,9 @@ urlpatterns = [ name="exam_scores_cid_user"), path("exam//toggle_active", views.PhysicsExamViews.exam_toggle_active, name="exam_toggle_active"), path("exam//toggle_results_published", views.PhysicsExamViews.exam_toggle_results_published, name="exam_toggle_results_published"), + path("exam//clone", views.ExamClone.as_view(), name="exam_clone"), + path("exam//update", views.ExamUpdate.as_view(), name="exam_update"), + path("exam//delete", views.ExamDelete.as_view(), name="exam_delete"), path("exam/submit", views.PhysicsExamViews.postExamAnswers, name="exam_answers_submit"), path("exam/", views.PhysicsExamViews.exam_list, name="exam_list"), path("exam/available", views.active_exams, name="active_exams"), diff --git a/physics/views.py b/physics/views.py index fd5700d6..94329ad4 100644 --- a/physics/views.py +++ b/physics/views.py @@ -459,6 +459,23 @@ class ExamCreate(RevisionMixin, LoginRequiredMixin, CreateView): class ExamClone(AuthorOrCheckerRequiredMixin, ExamCloneMixin, ExamCreate): """Clone exam view""" +class ExamDelete(RevisionMixin, AuthorOrCheckerRequiredMixin, DeleteView): + model = Exam + template_name = "exam_confirm_delete.html" + success_url = reverse_lazy("anatomy:index") + +class ExamUpdate( + RevisionMixin, LoginRequiredMixin, AuthorOrCheckerRequiredMixin, UpdateView +): + model = Exam + form_class = ExamForm + + def form_valid(self, form): + self.object = form.save(commit=False) + self.object.save() + + form.instance.author.add(self.request.user.id) + return super().form_valid(form) class QuestionView( LoginRequiredMixin, SingleTableMixin, FilterView, AuthorOrCheckerRequiredMixin