summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorBecky Smith <rebkwok@gmail.com>2017-03-30 10:13:15 +0100
committerTim Graham <timograham@gmail.com>2018-02-24 20:41:43 -0500
commit8116e588dbdd17171a322da589b691bdf01f7041 (patch)
treec46f319b831339ec9ee665e850f89bc3f3a169e0 /django
parent9822d88ca0dd855a668f9c33447aeac45a9768ac (diff)
Fixed #17962 -- Added ModelAdmin.get_deleted_objects().
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/actions.py6
-rw-r--r--django/contrib/admin/options.py11
2 files changed, 10 insertions, 7 deletions
diff --git a/django/contrib/admin/actions.py b/django/contrib/admin/actions.py
index d4bc3daf85..f64b89205e 100644
--- a/django/contrib/admin/actions.py
+++ b/django/contrib/admin/actions.py
@@ -4,7 +4,7 @@ Built-in, globally-available admin actions.
from django.contrib import messages
from django.contrib.admin import helpers
-from django.contrib.admin.utils import get_deleted_objects, model_ngettext
+from django.contrib.admin.utils import model_ngettext
from django.core.exceptions import PermissionDenied
from django.template.response import TemplateResponse
from django.utils.translation import gettext as _, gettext_lazy
@@ -29,9 +29,7 @@ def delete_selected(modeladmin, request, queryset):
# Populate deletable_objects, a data structure of all related objects that
# will also be deleted.
- deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
- queryset, request.user, modeladmin.admin_site,
- )
+ deletable_objects, model_count, perms_needed, protected = modeladmin.get_deleted_objects(queryset, request)
# The user has already confirmed the deletion.
# Do the deletion and return None to display the change list view again.
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index f9f5f85ef3..bbc402bd74 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -1728,6 +1728,13 @@ class ModelAdmin(BaseModelAdmin):
'admin/change_list.html'
], context)
+ def get_deleted_objects(self, objs, request):
+ """
+ Hook for customizing the delete process for the delete view and the
+ "delete selected" action.
+ """
+ return get_deleted_objects(objs, request.user, self.admin_site)
+
@csrf_protect_m
def delete_view(self, request, object_id, extra_context=None):
with transaction.atomic(using=router.db_for_write(self.model)):
@@ -1752,9 +1759,7 @@ class ModelAdmin(BaseModelAdmin):
# Populate deleted_objects, a data structure of all related objects that
# will also be deleted.
- deleted_objects, model_count, perms_needed, protected = get_deleted_objects(
- [obj], request.user, self.admin_site,
- )
+ deleted_objects, model_count, perms_needed, protected = self.get_deleted_objects([obj], request)
if request.POST and not protected: # The user has confirmed the deletion.
if perms_needed: