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 = {}