diff --git a/anatomy/tables.py b/anatomy/tables.py index 07f3e136..ae73768b 100644 --- a/anatomy/tables.py +++ b/anatomy/tables.py @@ -13,6 +13,7 @@ from easy_thumbnails.exceptions import InvalidImageFormatError class AnatomyUserAnswerTable(tables.Table): + select = tables.CheckBoxColumn(accessor=("")) delete = tables.LinkColumn( "anatomy:anatomy_user_answer_delete", text="Delete", args=[A("pk")], orderable=False ) diff --git a/anatomy/views.py b/anatomy/views.py index fe22a9a8..bf303ab7 100644 --- a/anatomy/views.py +++ b/anatomy/views.py @@ -62,6 +62,8 @@ from helpers.images import image_as_base64 from django.template.defaulttags import register +from generic.mixins import SuperuserRequiredMixin + @register.filter def get_item(dictionary, key): @@ -944,6 +946,6 @@ def question_save_annotation(request, pk): AnatomyExamViews = ExamViews(Exam, "anatomy", "anatomy", loadJsonAnswer) -class UserAnswerDelete(DeleteView): +class UserAnswerDelete(SuperuserRequiredMixin, DeleteView): model = CidUserAnswer success_url = reverse_lazy("anatomy:anatomy_user_answer_view") \ No newline at end of file diff --git a/generic/mixins.py b/generic/mixins.py new file mode 100644 index 00000000..875aa998 --- /dev/null +++ b/generic/mixins.py @@ -0,0 +1,6 @@ +from django.contrib.auth.mixins import UserPassesTestMixin + + +class SuperuserRequiredMixin(UserPassesTestMixin): + def test_func(self): + return self.request.user.is_superuser \ No newline at end of file