mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
30 lines
951 B
Python
30 lines
951 B
Python
from django.db.models.signals import post_delete, post_save
|
|
from django.dispatch import receiver
|
|
from django.utils import timezone
|
|
|
|
from dcim.signals import rebuild_paths
|
|
from .models import Circuit, CircuitTermination
|
|
|
|
|
|
@receiver(post_save, sender=CircuitTermination)
|
|
def update_circuit(instance, **kwargs):
|
|
"""
|
|
When a CircuitTermination has been modified, update its parent Circuit.
|
|
"""
|
|
fields = {
|
|
'last_updated': timezone.now(),
|
|
f'termination_{instance.term_side.lower()}': instance.pk,
|
|
}
|
|
Circuit.objects.filter(pk=instance.circuit_id).update(**fields)
|
|
|
|
|
|
@receiver((post_save, post_delete), sender=CircuitTermination)
|
|
def rebuild_cablepaths(instance, raw=False, **kwargs):
|
|
"""
|
|
Rebuild any CablePaths which traverse the peer CircuitTermination.
|
|
"""
|
|
if not raw:
|
|
peer_termination = instance.get_peer_termination()
|
|
if peer_termination:
|
|
rebuild_paths(peer_termination)
|