2
0

signals.py 951 B

1234567891011121314151617181920212223242526272829
  1. from django.db.models.signals import post_delete, post_save
  2. from django.dispatch import receiver
  3. from django.utils import timezone
  4. from dcim.signals import rebuild_paths
  5. from .models import Circuit, CircuitTermination
  6. @receiver(post_save, sender=CircuitTermination)
  7. def update_circuit(instance, **kwargs):
  8. """
  9. When a CircuitTermination has been modified, update its parent Circuit.
  10. """
  11. fields = {
  12. 'last_updated': timezone.now(),
  13. f'termination_{instance.term_side.lower()}': instance.pk,
  14. }
  15. Circuit.objects.filter(pk=instance.circuit_id).update(**fields)
  16. @receiver((post_save, post_delete), sender=CircuitTermination)
  17. def rebuild_cablepaths(instance, raw=False, **kwargs):
  18. """
  19. Rebuild any CablePaths which traverse the peer CircuitTermination.
  20. """
  21. if not raw:
  22. peer_termination = instance.get_peer_termination()
  23. if peer_termination:
  24. rebuild_paths(peer_termination)