From 1c902f6eaf0ce05c004d9c1aa592ca12d4d1ee5b Mon Sep 17 00:00:00 2001 From: Sander Steffann Date: Wed, 23 Oct 2019 17:19:45 +0200 Subject: [PATCH] Update endpoints of circuit terminations without creating a loop Reverts "Break infinite loop by removing redundant update" --- netbox/circuits/signals.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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)