Просмотр исходного кода

Restore reverse relation to CableTerminations from Cable

jeremystretch 3 лет назад
Родитель
Сommit
1b593384e5

+ 1 - 1
netbox/dcim/forms/connections.py

@@ -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'],
             ]

+ 1 - 1
netbox/dcim/migrations/0154_cabletermination.py

@@ -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={

+ 3 - 5
netbox/dcim/models/cables.py

@@ -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,

+ 2 - 2
netbox/dcim/signals.py

@@ -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()