1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Update & restore rebuild_paths()

This commit is contained in:
jeremystretch
2022-05-10 10:30:58 -04:00
parent 5667a9c456
commit d89f067c00
3 changed files with 12 additions and 11 deletions

View File

@ -23,5 +23,5 @@ def rebuild_cablepaths(instance, raw=False, **kwargs):
"""
if not raw:
peer_termination = instance.get_peer_termination()
# if peer_termination:
# rebuild_paths(peer_termination)
if peer_termination:
rebuild_paths([peer_termination])

View File

@ -100,8 +100,8 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
# Examine type of first termination to determine object type (all must be the same)
if isinstance(terms[0], PathEndpoint):
create_cablepath(terms)
# else:
# rebuild_paths(terms)
else:
rebuild_paths(terms)
# elif instance.status != instance._orig_status:
# # We currently don't support modifying either termination of an existing Cable. (This
# # may change in the future.) However, we do need to capture status changes and update

View File

@ -52,16 +52,17 @@ def create_cablepath(terminations):
cp.save()
def rebuild_paths(obj):
def rebuild_paths(terminations):
"""
Rebuild all CablePaths which traverse the specified node
"""
from dcim.models import CablePath
cable_paths = CablePath.objects.filter(path__contains=obj)
for obj in terminations:
cable_paths = CablePath.objects.filter(_nodes__contains=obj)
with transaction.atomic():
for cp in cable_paths:
cp.delete()
if cp.origin:
create_cablepath(cp.origin)
origins = [path_node_to_object(node) for node in cp.path[0]]
create_cablepath(origins)