From 3420b5fbdf226243e8c058c0ba5afc9809d7a65c Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 30 Oct 2018 14:27:45 -0400 Subject: [PATCH] CircuitTermination should inherit from CableTermination --- netbox/circuits/migrations/0013_cables.py | 9 +++++++-- netbox/circuits/models.py | 3 ++- netbox/dcim/models.py | 4 +++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/netbox/circuits/migrations/0013_cables.py b/netbox/circuits/migrations/0013_cables.py index dfdfedb96..a2784ed0d 100644 --- a/netbox/circuits/migrations/0013_cables.py +++ b/netbox/circuits/migrations/0013_cables.py @@ -57,7 +57,7 @@ class Migration(migrations.Migration): operations = [ - # Add CircuitTermination.connected_endpoint + # Add new CircuitTermination fields migrations.AddField( model_name='circuittermination', name='connected_endpoint', @@ -68,11 +68,16 @@ class Migration(migrations.Migration): name='connection_status', field=models.NullBooleanField(default=True), ), + migrations.AddField( + model_name='circuittermination', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.Cable'), + ), # Copy CircuitTermination connections to Interfaces as Cables migrations.RunPython(circuit_terminations_to_cables), - # Model changes + # Remove interface field from CircuitTermination migrations.RemoveField( model_name='circuittermination', name='interface', diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index 2b01965c6..5572f1626 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -5,6 +5,7 @@ from taggit.managers import TaggableManager from dcim.constants import CONNECTION_STATUS_CHOICES, CONNECTION_STATUS_CONNECTED, STATUS_CLASSES from dcim.fields import ASNField +from dcim.models import CableTermination from extras.models import CustomFieldModel, ObjectChange from utilities.models import ChangeLoggedModel from utilities.utils import serialize_object @@ -211,7 +212,7 @@ class Circuit(ChangeLoggedModel, CustomFieldModel): return self._get_termination('Z') -class CircuitTermination(models.Model): +class CircuitTermination(CableTermination): circuit = models.ForeignKey( to='circuits.Circuit', on_delete=models.CASCADE, diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 9889f9466..90a58bfb3 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -15,7 +15,6 @@ from mptt.models import MPTTModel, TreeForeignKey from taggit.managers import TaggableManager from timezone_field import TimeZoneField -from circuits.models import Circuit, CircuitTermination from extras.models import ConfigContextModel, CustomFieldModel, ObjectChange from utilities.fields import ColorField, NullableCharField from utilities.managers import NaturalOrderByManager @@ -336,6 +335,7 @@ class Site(ChangeLoggedModel, CustomFieldModel): @property def count_circuits(self): + from circuits.models import Circuit return Circuit.objects.filter(terminations__site=self).count() @property @@ -2023,6 +2023,8 @@ class Interface(CableTermination, ComponentModel): @connected_endpoint.setter def connected_endpoint(self, value): + from circuits.models import CircuitTermination + if value is None: self._connected_interface = None self._connected_circuittermination = None