diff --git a/netbox/circuits/signals.py b/netbox/circuits/signals.py index 7471a4136..267e166a3 100644 --- a/netbox/circuits/signals.py +++ b/netbox/circuits/signals.py @@ -1,4 +1,4 @@ -from django.db.models.signals import post_delete, post_save +from django.db.models.signals import post_delete, post_save, pre_delete from django.dispatch import receiver from django.utils import timezone @@ -16,3 +16,18 @@ def update_circuit(instance, **kwargs): for circuit in circuits: circuit.last_updated = time circuit.save() + + +@receiver(post_save, sender=CircuitTermination) +def update_connected_endpoints(instance, created, **kwargs): + if created: + # Update all endpoints affected by this circuit + endpoints = instance.circuit.get_related_endpoints() + update_endpoints(endpoints) + + +@receiver(post_delete, sender=CircuitTermination) +def nullify_connected_endpoints(instance, **kwargs): + # Update all endpoints affected by this circuit (through the other termination point) + endpoints = instance.circuit.get_related_endpoints() + update_endpoints(endpoints)