Restore reverse relation to CableTerminations from Cable

This commit is contained in:
jeremystretch 2022-05-13 15:45:58 -04:00
parent 951627093c
commit 1b593384e5
4 changed files with 7 additions and 9 deletions

View File

@ -47,7 +47,7 @@ class BaseCableConnectionForm(TenancyForm, NetBoxModelForm):
for ct in terminations:
ct.save()
else:
instance.terminations = [
instance._terminations = [
*self.cleaned_data['a_terminations'],
*self.cleaned_data['b_terminations'],
]

View File

@ -16,7 +16,7 @@ class Migration(migrations.Migration):
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('cable_end', models.CharField(max_length=1)),
('termination_id', models.PositiveBigIntegerField()),
('cable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.cable')),
('cable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', to='dcim.cable')),
('termination_type', models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')),
],
options={

View File

@ -117,9 +117,9 @@ class Cable(NetBoxModel):
])
if terminations:
assert self.pk is None
self.terminations = terminations
self._terminations = terminations
else:
self.terminations = []
self._terminations = []
@classmethod
def from_db(cls, db, field_names, values):
@ -128,8 +128,6 @@ class Cable(NetBoxModel):
"""
instance = super().from_db(db, field_names, values)
instance.terminations = CableTermination.objects.filter(cable=instance)
# instance._orig_termination_a_type_id = instance.termination_a_type_id
# instance._orig_termination_a_ids = instance.termination_a_ids
# instance._orig_termination_b_type_id = instance.termination_b_type_id
@ -205,7 +203,7 @@ class CableTermination(models.Model):
cable = models.ForeignKey(
to='dcim.Cable',
on_delete=models.CASCADE,
related_name='+'
related_name='terminations'
)
cable_end = models.CharField(
max_length=1,

View File

@ -82,13 +82,13 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
# Save any new CableTerminations
CableTermination.objects.bulk_create([
term for term in instance.terminations if not term.pk
term for term in instance._terminations if not term.pk
])
# Split terminations into A/B sets and save link assignments
# TODO: Update link peers
_terms = defaultdict(list)
for t in instance.terminations:
for t in instance._terminations:
if t.termination.cable != instance:
t.termination.cable = instance
t.termination.save()