mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -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:
|
for ct in terminations:
|
||||||
ct.save()
|
ct.save()
|
||||||
else:
|
else:
|
||||||
instance.terminations = [
|
instance._terminations = [
|
||||||
*self.cleaned_data['a_terminations'],
|
*self.cleaned_data['a_terminations'],
|
||||||
*self.cleaned_data['b_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)),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
('cable_end', models.CharField(max_length=1)),
|
('cable_end', models.CharField(max_length=1)),
|
||||||
('termination_id', models.PositiveBigIntegerField()),
|
('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')),
|
('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={
|
options={
|
||||||
|
@ -117,9 +117,9 @@ class Cable(NetBoxModel):
|
|||||||
])
|
])
|
||||||
if terminations:
|
if terminations:
|
||||||
assert self.pk is None
|
assert self.pk is None
|
||||||
self.terminations = terminations
|
self._terminations = terminations
|
||||||
else:
|
else:
|
||||||
self.terminations = []
|
self._terminations = []
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_db(cls, db, field_names, values):
|
def from_db(cls, db, field_names, values):
|
||||||
@ -128,8 +128,6 @@ class Cable(NetBoxModel):
|
|||||||
"""
|
"""
|
||||||
instance = super().from_db(db, field_names, values)
|
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_type_id = instance.termination_a_type_id
|
||||||
# instance._orig_termination_a_ids = instance.termination_a_ids
|
# instance._orig_termination_a_ids = instance.termination_a_ids
|
||||||
# instance._orig_termination_b_type_id = instance.termination_b_type_id
|
# instance._orig_termination_b_type_id = instance.termination_b_type_id
|
||||||
@ -205,7 +203,7 @@ class CableTermination(models.Model):
|
|||||||
cable = models.ForeignKey(
|
cable = models.ForeignKey(
|
||||||
to='dcim.Cable',
|
to='dcim.Cable',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
related_name='+'
|
related_name='terminations'
|
||||||
)
|
)
|
||||||
cable_end = models.CharField(
|
cable_end = models.CharField(
|
||||||
max_length=1,
|
max_length=1,
|
||||||
|
@ -82,13 +82,13 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
|
|||||||
|
|
||||||
# Save any new CableTerminations
|
# Save any new CableTerminations
|
||||||
CableTermination.objects.bulk_create([
|
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
|
# Split terminations into A/B sets and save link assignments
|
||||||
# TODO: Update link peers
|
# TODO: Update link peers
|
||||||
_terms = defaultdict(list)
|
_terms = defaultdict(list)
|
||||||
for t in instance.terminations:
|
for t in instance._terminations:
|
||||||
if t.termination.cable != instance:
|
if t.termination.cable != instance:
|
||||||
t.termination.cable = instance
|
t.termination.cable = instance
|
||||||
t.termination.save()
|
t.termination.save()
|
||||||
|
Loading…
Reference in New Issue
Block a user