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