Compare commits

...

5 Commits

Author SHA1 Message Date
Arthur Hanson
6f7e9f8692
Merge 5f58fe1eb5 into f61a2964c8 2025-07-09 15:28:52 +02:00
Arthur
5f58fe1eb5 Merge branch 'main' into 15390-cable 2025-06-02 15:07:55 -07:00
Arthur
5fb81e9943 #15390 add trace signal if cable terminatiions changed 2025-05-29 15:14:31 -07:00
Arthur
e8891f770c #15390 add trace signal if cable terminatiions changed 2025-05-29 14:39:41 -07:00
Arthur
4739f27c14 #15390 add trace signal if cable terminatiions changed 2025-05-29 13:52:00 -07:00

View File

@ -220,6 +220,7 @@ class Cable(PrimaryModel):
b_terminations = {ct.termination: ct for ct in self.terminations.filter(cable_end='B')}
# Delete stale CableTerminations
if self._terminations_modified:
for termination, ct in a_terminations.items():
if termination.pk and termination not in self.a_terminations:
@ -312,6 +313,12 @@ class CableTermination(ChangeLoggedModel):
def __str__(self):
return f'Cable {self.cable} to {self.termination}'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._orig_cable = self.__dict__.get('cable')
self._orig_cable_end = self.__dict__.get('cable_end')
def clean(self):
super().clean()
@ -349,6 +356,7 @@ class CableTermination(ChangeLoggedModel):
# Cache objects associated with the terminating object (for filtering)
self.cache_related_objects()
created = self.pk is None
super().save(*args, **kwargs)
@ -359,6 +367,28 @@ class CableTermination(ChangeLoggedModel):
termination.cable_end = self.cable_end
termination.save()
# figure out which cable terminations changed
if not created:
update_cable_termination = False
update_orig_cable_termination = False
if self._orig_cable and self._orig_cable != self.cable:
update_cable_termination = True
update_orig_cable_termination = True
elif self._orig_cable_end and self._orig_cable_end != self.cable_end:
update_cable_termination = True
if update_cable_termination:
self.cable._terminations_modified = True
trace_paths.send(Cable, instance=self.cable, created=False)
if update_orig_cable_termination:
self._orig_cable._terminations_modified = True
trace_paths.send(Cable, instance=self._orig_cable, created=False)
self._orig_cable_end = self.cable_end
self._orig_cable = self.cable
def delete(self, *args, **kwargs):
# Delete the cable association on the terminating object
@ -369,6 +399,7 @@ class CableTermination(ChangeLoggedModel):
termination.save()
super().delete(*args, **kwargs)
trace_paths.send(Cable, instance=self.cable, created=False)
def cache_related_objects(self):
"""