From b81d4629769e18dd1e27a29ae615e9a0a54fbb99 Mon Sep 17 00:00:00 2001
From: Jamie Murphy
Date: Fri, 8 Sep 2023 00:01:53 +0100
Subject: [PATCH] show objects that would be deleted by cascade
---
netbox/netbox/views/generic/object_views.py | 13 ++++++++++++-
netbox/templates/htmx/delete_form.html | 8 ++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py
index 99d8ff540..6051944f7 100644
--- a/netbox/netbox/views/generic/object_views.py
+++ b/netbox/netbox/views/generic/object_views.py
@@ -2,7 +2,8 @@ import logging
from copy import deepcopy
from django.contrib import messages
-from django.db import transaction
+from django.contrib.admin.utils import NestedObjects
+from django.db import transaction, router
from django.db.models import ProtectedError
from django.shortcuts import redirect, render
from django.urls import reverse
@@ -334,6 +335,14 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
obj = self.get_object(**kwargs)
form = ConfirmationForm(initial=request.GET)
+ using = router.db_for_write(obj._meta.model)
+ collector = NestedObjects(using=using)
+ collector.collect([obj])
+ if collector.nested():
+ nested_objs = collector.nested()[1]
+ else:
+ nested_objs = []
+
# If this is an HTMX request, return only the rendered deletion form as modal content
if is_htmx(request):
viewname = get_viewname(self.queryset.model, action='delete')
@@ -343,6 +352,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
'object_type': self.queryset.model._meta.verbose_name,
'form': form,
'form_url': form_url,
+ 'nested_objs': nested_objs,
**self.get_extra_context(request, obj),
})
@@ -350,6 +360,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
'object': obj,
'form': form,
'return_url': self.get_return_url(request, obj),
+ 'nested_objs': nested_objs,
**self.get_extra_context(request, obj),
})
diff --git a/netbox/templates/htmx/delete_form.html b/netbox/templates/htmx/delete_form.html
index d0fba9d36..150335ae8 100644
--- a/netbox/templates/htmx/delete_form.html
+++ b/netbox/templates/htmx/delete_form.html
@@ -12,6 +12,14 @@
Are you sure you want to delete {{ object_type }} {{ object }}?
{% endblocktrans %}
+ {% if nested_objs %}
+
+ This will cause deltion of the following related items:
+ {% for nested_obj in nested_objs %}
+ {{ nested_obj }}
+ {% endfor %}
+
+ {% endif %}
{% render_form form %}