Add termination FKs on Circuit model

This commit is contained in:
Jeremy Stretch
2021-03-18 13:54:05 -04:00
parent 574a43fff7
commit 872e936924
9 changed files with 96 additions and 54 deletions

View File

@@ -9,7 +9,6 @@ from extras.utils import extras_features
from netbox.models import BigIDModel, ChangeLoggedModel, OrganizationalModel, PrimaryModel
from utilities.querysets import RestrictedQuerySet
from .choices import *
from .querysets import CircuitQuerySet
__all__ = (
@@ -236,7 +235,25 @@ class Circuit(PrimaryModel):
blank=True
)
objects = CircuitQuerySet.as_manager()
# Cache associated CircuitTerminations
termination_a = models.ForeignKey(
to='circuits.CircuitTermination',
on_delete=models.SET_NULL,
related_name='+',
editable=False,
blank=True,
null=True
)
termination_z = models.ForeignKey(
to='circuits.CircuitTermination',
on_delete=models.SET_NULL,
related_name='+',
editable=False,
blank=True,
null=True
)
objects = RestrictedQuerySet.as_manager()
csv_headers = [
'cid', 'provider', 'type', 'status', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
@@ -271,20 +288,6 @@ class Circuit(PrimaryModel):
def get_status_class(self):
return CircuitStatusChoices.CSS_CLASSES.get(self.status)
def _get_termination(self, side):
for ct in self.terminations.all():
if ct.term_side == side:
return ct
return None
@property
def termination_a(self):
return self._get_termination('A')
@property
def termination_z(self):
return self._get_termination('Z')
@extras_features('webhooks')
class CircuitTermination(ChangeLoggedModel, PathEndpoint, CableTermination):
@@ -345,6 +348,9 @@ class CircuitTermination(ChangeLoggedModel, PathEndpoint, CableTermination):
unique_together = ['circuit', 'term_side']
def __str__(self):
if self.site:
return str(self.site)
return str(self.cloud)
return f"Side {self.get_term_side_display()}"
def clean(self):