signals.py 907 B

123456789101112131415161718192021222324252627
  1. from django.db.models.signals import post_delete, post_save
  2. from django.dispatch import receiver
  3. from dcim.signals import rebuild_paths
  4. from .models import CircuitTermination
  5. @receiver(post_save, sender=CircuitTermination)
  6. def update_circuit(instance, **kwargs):
  7. """
  8. When a CircuitTermination has been modified, update its parent Circuit.
  9. """
  10. termination_name = f'termination_{instance.term_side.lower()}'
  11. instance.circuit.refresh_from_db()
  12. setattr(instance.circuit, termination_name, instance)
  13. instance.circuit.save()
  14. @receiver((post_save, post_delete), sender=CircuitTermination)
  15. def rebuild_cablepaths(instance, raw=False, **kwargs):
  16. """
  17. Rebuild any CablePaths which traverse the peer CircuitTermination.
  18. """
  19. if not raw:
  20. peer_termination = instance.get_peer_termination()
  21. if peer_termination:
  22. rebuild_paths([peer_termination])