From 63b1736c97ff6c1fc2a26d2cb9c1e459d41a341a Mon Sep 17 00:00:00 2001
From: Jamie Murphy
Date: Fri, 20 Oct 2023 07:52:06 +0100
Subject: [PATCH] cleanup
- migrate code to use collector directly instead of the NestedObjects wrapper from admin.utils
- adjust object names and text output
---
netbox/netbox/views/generic/object_views.py | 17 ++++++++++-------
netbox/templates/htmx/delete_form.html | 8 ++++----
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py
index 4757a77f5..de6b5cb9a 100644
--- a/netbox/netbox/views/generic/object_views.py
+++ b/netbox/netbox/views/generic/object_views.py
@@ -2,9 +2,9 @@ import logging
from copy import deepcopy
from django.contrib import messages
-from django.contrib.admin.utils import NestedObjects
from django.db import transaction, router
from django.db.models import ProtectedError
+from django.db.models.deletion import Collector
from django.shortcuts import redirect, render
from django.urls import reverse
from django.utils.html import escape
@@ -336,13 +336,16 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
form = ConfirmationForm(initial=request.GET)
using = router.db_for_write(obj._meta.model)
- collector = NestedObjects(using=using)
+ collector = Collector(using=using)
collector.collect([obj])
- nested_objs = []
+ deletion_objects = []
if collector.instances_with_model():
for model, instance in collector.instances_with_model():
- nested_objs.append(f"{model.__name__} - {instance}")
-
+ # we could ignore the instance == obj so that the list doesnt contain itself...
+ deletion_objects.append({
+ "modelname":f"{model.__name__}",
+ "object": instance,
+ })
# If this is an HTMX request, return only the rendered deletion form as modal content
if is_htmx(request):
@@ -353,7 +356,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
'object_type': self.queryset.model._meta.verbose_name,
'form': form,
'form_url': form_url,
- 'nested_objs': nested_objs,
+ 'deletion_objects': deletion_objects,
**self.get_extra_context(request, obj),
})
@@ -361,7 +364,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView):
'object': obj,
'form': form,
'return_url': self.get_return_url(request, obj),
- 'nested_objs': nested_objs,
+ 'deletion_objects': deletion_objects,
**self.get_extra_context(request, obj),
})
diff --git a/netbox/templates/htmx/delete_form.html b/netbox/templates/htmx/delete_form.html
index 9aac23aa6..f108f41ea 100644
--- a/netbox/templates/htmx/delete_form.html
+++ b/netbox/templates/htmx/delete_form.html
@@ -12,11 +12,11 @@
Are you sure you want to delete {{ object_type }} {{ object }}?
{% endblocktrans %}
- {% if nested_objs %}
+ {% if deletion_objects %}
- This will cause deltion of the following related items:
- {% for nested_obj in nested_objs %}
- - {{ nested_obj }}
+ This will cause deltion of the following items:
+ {% for deletion_object in deletion_objects %}
+ - {{ deletion_object.modelname }} - {{ deletion_object.object | linkify }}
{% endfor %}
{% endif %}