ソースを参照

Fixes #6602: Fix deletion of devices with cables attached

jeremystretch 4 年 前
コミット
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
 * [#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
 * [#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
 * [#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
     # Disassociate the Cable from its termination points
     if instance.termination_a is not None:
     if instance.termination_a is not None:
         logger.debug(f"Nullifying termination A for cable {instance}")
         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:
     if instance.termination_b is not None:
         logger.debug(f"Nullifying termination B for cable {instance}")
         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
     # Delete and retrace any dependent cable paths
     for cablepath in CablePath.objects.filter(path__contains=instance):
     for cablepath in CablePath.objects.filter(path__contains=instance):