From 95cb49bfcbecd845f8b10c633c66028523c242a9 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 23 Aug 2015 22:33:22 -0400 Subject: [PATCH] Add mixin to pass extra argument during object deletion. Used for logging the user performing an action. --- mayan/apps/common/generics.py | 2 +- mayan/apps/common/mixins.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index 7d9d041137..45d837b88b 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -281,7 +281,7 @@ class SingleObjectCreateView(InstanceExtraDataMixin, ViewPermissionCheckMixin, E return result -class SingleObjectDeleteView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, DeleteView): +class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, RedirectionMixin, DeleteView): template_name = 'appearance/generic_confirm.html' def get_context_data(self, **kwargs): diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 25729085c6..4f9abfa420 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -10,12 +10,24 @@ from acls.models import AccessControlList from permissions import Permission __all__ = ( - 'ExtraContextMixin', 'InstanceExtraDataMixin', + 'DeleteExtraDataMixin', 'ExtraContextMixin', 'InstanceExtraDataMixin', 'ObjectListPermissionFilterMixin', 'ObjectPermissionCheckMixin', 'RedirectionMixin', 'ViewPermissionCheckMixin' ) +class DeleteExtraDataMixin(object): + def delete(self, request, *args, **kwargs): + self.object = self.get_object() + success_url = self.get_success_url() + if hasattr(self, 'get_delete_extra_data'): + self.object.delete(**self.get_delete_extra_data()) + else: + self.object.delete() + + return HttpResponseRedirect(success_url) + + class ExtraContextMixin(object): extra_context = {}