Просмотр исходного кода

Fixes #6602: Fix deletion of devices with cables attached

jeremystretch 4 лет назад
Родитель
Сommit
f56a470cc7
2 измененных файлов с 5 добавлено и 6 удалено
  1. 1 0
      docs/release-notes/version-2.11.md
  2. 4 6
      netbox/dcim/signals.py

+ 1 - 0
docs/release-notes/version-2.11.md

@@ -13,6 +13,7 @@
 * [#6562](https://github.com/netbox-community/netbox/issues/6562) - Disable ordering of secrets by assigned object
 * [#6563](https://github.com/netbox-community/netbox/issues/6563) - Fix filtering by location for cable connection forms
 * [#6584](https://github.com/netbox-community/netbox/issues/6584) - Fix ordering of nested inventory items
+* [#6602](https://github.com/netbox-community/netbox/issues/6602) - Fix deletion of devices with cables attached
 
 ---
 

+ 4 - 6
netbox/dcim/signals.py

@@ -146,14 +146,12 @@ def nullify_connected_endpoints(instance, **kwargs):
     # Disassociate the Cable from its termination points
     if instance.termination_a is not None:
         logger.debug(f"Nullifying termination A for cable {instance}")
-        instance.termination_a.cable = None
-        instance.termination_a._cable_peer = None
-        instance.termination_a.save()
+        model = instance.termination_a._meta.model
+        model.objects.filter(pk=instance.termination_a.pk).update(_cable_peer_type=None, _cable_peer_id=None)
     if instance.termination_b is not None:
         logger.debug(f"Nullifying termination B for cable {instance}")
-        instance.termination_b.cable = None
-        instance.termination_b._cable_peer = None
-        instance.termination_b.save()
+        model = instance.termination_b._meta.model
+        model.objects.filter(pk=instance.termination_b.pk).update(_cable_peer_type=None, _cable_peer_id=None)
 
     # Delete and retrace any dependent cable paths
     for cablepath in CablePath.objects.filter(path__contains=instance):