This commit is contained in:
Arthur
2026-04-10 12:04:48 -07:00
parent 90255a268f
commit 7b9ab87e38
2 changed files with 11 additions and 2 deletions

View File

@@ -171,8 +171,15 @@ def retrace_cable_paths(instance, **kwargs):
def retrace_cable_paths_after_raw_create(sender, pks, **kwargs): def retrace_cable_paths_after_raw_create(sender, pks, **kwargs):
""" """
When Cables are created via a raw save, the normal Cable.save() path is bypassed, When Cables are created via a raw save, the normal Cable.save() path is bypassed,
so trace_paths is never sent. Retrace paths for all newly created cables once their so trace_paths is never sent. Retrace paths for all newly created cables.
CableTerminations have been applied.
Callers must only send this signal after all CableTerminations for the given cables
have been applied. If a cable has no terminations, update_connected_endpoints will
find empty termination lists and skip path creation — so this is safe to call even
if terminations are absent, but path tracing will have no effect.
Note: raw=False (the default) is intentional here — we explicitly want
update_connected_endpoints to run, unlike during fixture loading (raw=True).
""" """
logger = logging.getLogger('netbox.dcim.cable') logger = logging.getLogger('netbox.dcim.cable')
for cable in Cable.objects.filter(pk__in=pks): for cable in Cable.objects.filter(pk__in=pks):

View File

@@ -6,4 +6,6 @@ post_clean = Signal()
# Sent after objects of a given model are created via raw save. # Sent after objects of a given model are created via raw save.
# Expected call signature: post_raw_create.send(sender=MyModel, pks=[...]) # Expected call signature: post_raw_create.send(sender=MyModel, pks=[...])
# Provides: pks (list) - PKs of the newly created objects. # Provides: pks (list) - PKs of the newly created objects.
# Callers must ensure all related objects (e.g. M2M, dependent rows) are in place
# before sending, as receivers may query related data to perform post-create work.
post_raw_create = Signal() post_raw_create = Signal()