diff --git a/docs/release-notes/version-3.3.md b/docs/release-notes/version-3.3.md index d99dc7099..a6dbdef19 100644 --- a/docs/release-notes/version-3.3.md +++ b/docs/release-notes/version-3.3.md @@ -14,6 +14,7 @@ * [#10236](https://github.com/netbox-community/netbox/issues/10236) - Fix TypeError exception when viewing PDU configured for three-phase power * [#10579](https://github.com/netbox-community/netbox/issues/10579) - Mark cable traces terminating to a provider network as complete * [#10721](https://github.com/netbox-community/netbox/issues/10721) - Disable ordering by custom object field columns +* [#10969](https://github.com/netbox-community/netbox/issues/10969) - Update cable paths ending at associated rear port when creating new front ports --- diff --git a/netbox/dcim/signals.py b/netbox/dcim/signals.py index b990daf1a..f223f9c5a 100644 --- a/netbox/dcim/signals.py +++ b/netbox/dcim/signals.py @@ -4,7 +4,9 @@ from django.db.models.signals import post_save, post_delete, pre_delete from django.dispatch import receiver from .choices import CableEndChoices, LinkStatusChoices -from .models import Cable, CablePath, CableTermination, Device, PathEndpoint, PowerPanel, Rack, Location, VirtualChassis +from .models import ( + Cable, CablePath, CableTermination, Device, FrontPort, PathEndpoint, PowerPanel, Rack, Location, VirtualChassis, +) from .models.cables import trace_paths from .utils import create_cablepath, rebuild_paths @@ -123,3 +125,14 @@ def nullify_connected_endpoints(instance, **kwargs): for cablepath in CablePath.objects.filter(_nodes__contains=instance.cable): cablepath.retrace() + + +@receiver(post_save, sender=FrontPort) +def extend_rearport_cable_paths(instance, created, **kwargs): + """ + When a new FrontPort is created, add it to any CablePaths which end at its corresponding RearPort. + """ + if created: + rearport = instance.rear_port + for cablepath in CablePath.objects.filter(_nodes__contains=rearport): + cablepath.retrace()