Przeglądaj źródła

Make sure that the endpoint is actually a CableTermination

Sander Steffann 5 lat temu
rodzic
commit
0455947597
1 zmienionych plików z 4 dodań i 3 usunięć
  1. 4 3
      netbox/dcim/signals.py

+ 4 - 3
netbox/dcim/signals.py

@@ -4,7 +4,7 @@ from django.db.models.signals import post_save, pre_delete
 from django.dispatch import receiver
 
 from .choices import CableStatusChoices
-from .models import Cable, Device, FrontPort, RearPort, VirtualChassis
+from .models import Cable, CableTermination, Device, FrontPort, RearPort, VirtualChassis
 
 
 @receiver(post_save, sender=VirtualChassis)
@@ -63,8 +63,9 @@ def update_connected_endpoints(instance, **kwargs):
         endpoint_a = path[0][0]
         endpoint_b = path[-1][2] if not split_ends and not position_stack else None
 
-        # Patch panel ports are not connected endpoints, everything else is
-        if not isinstance(endpoint_a, (FrontPort, RearPort)) and not isinstance(endpoint_b, (FrontPort, RearPort)):
+        # Patch panel ports are not connected endpoints, all other cable terminations are
+        if isinstance(endpoint_a, CableTermination) and not isinstance(endpoint_a, (FrontPort, RearPort)) and \
+                isinstance(endpoint_b, CableTermination) and not isinstance(endpoint_b, (FrontPort, RearPort)):
             logger.debug("Updating path endpoints: {} <---> {}".format(endpoint_a, endpoint_b))
             endpoint_a.connected_endpoint = endpoint_b
             endpoint_a.connection_status = path_status