mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
Restore reverse relation to CableTerminations from Cable
This commit is contained in:
parent
951627093c
commit
1b593384e5
@ -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'],
|
||||
]
|
||||
|
@ -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={
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user