From 4e2863e4ec66026c19b4274b849b7d73d500874d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 21 Nov 2019 21:28:59 -0500 Subject: [PATCH] Move CircuitTermination.term_side choices to a ChoiceSet --- netbox/circuits/choices.py | 19 ++++++++++++++++++ netbox/circuits/constants.py | 7 ------- netbox/circuits/filters.py | 1 - netbox/circuits/forms.py | 1 - netbox/circuits/models.py | 5 ++--- netbox/circuits/tests/test_api.py | 32 ++++++++++++++++++++++--------- netbox/circuits/views.py | 14 +++++++++----- 7 files changed, 53 insertions(+), 26 deletions(-) delete mode 100644 netbox/circuits/constants.py diff --git a/netbox/circuits/choices.py b/netbox/circuits/choices.py index f562e9837..94a765d11 100644 --- a/netbox/circuits/choices.py +++ b/netbox/circuits/choices.py @@ -1,6 +1,10 @@ from utilities.choices import ChoiceSet +# +# Circuits +# + class CircuitStatusChoices(ChoiceSet): STATUS_DEPROVISIONING = 'deprovisioning' @@ -27,3 +31,18 @@ class CircuitStatusChoices(ChoiceSet): STATUS_OFFLINE: 4, STATUS_DECOMMISSIONED: 5, } + + +# +# CircuitTerminations +# + +class CircuitTerminationSideChoices(ChoiceSet): + + SIDE_A = 'A' + SIDE_Z = 'Z' + + CHOICES = ( + (SIDE_A, 'A'), + (SIDE_Z, 'Z') + ) diff --git a/netbox/circuits/constants.py b/netbox/circuits/constants.py deleted file mode 100644 index 7c26de754..000000000 --- a/netbox/circuits/constants.py +++ /dev/null @@ -1,7 +0,0 @@ -# CircuitTermination sides -TERM_SIDE_A = 'A' -TERM_SIDE_Z = 'Z' -TERM_SIDE_CHOICES = ( - (TERM_SIDE_A, 'A'), - (TERM_SIDE_Z, 'Z'), -) diff --git a/netbox/circuits/filters.py b/netbox/circuits/filters.py index a70a3aae2..b4ef655f5 100644 --- a/netbox/circuits/filters.py +++ b/netbox/circuits/filters.py @@ -6,7 +6,6 @@ from extras.filters import CustomFieldFilterSet from tenancy.filtersets import TenancyFilterSet from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter from .choices import * -from .constants import * from .models import Circuit, CircuitTermination, CircuitType, Provider diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index e73504e20..ad99dd40d 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -10,7 +10,6 @@ from utilities.forms import ( FilterChoiceField, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple ) from .choices import CircuitStatusChoices -from .constants import * from .models import Circuit, CircuitTermination, CircuitType, Provider diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index abc643db5..5f80a4bfe 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -3,14 +3,13 @@ from django.db import models from django.urls import reverse from taggit.managers import TaggableManager -from dcim.constants import CONNECTION_STATUS_CHOICES, STATUS_CLASSES +from dcim.constants import CONNECTION_STATUS_CHOICES from dcim.fields import ASNField from dcim.models import CableTermination from extras.models import CustomFieldModel, ObjectChange, TaggedItem from utilities.models import ChangeLoggedModel from utilities.utils import serialize_object from .choices import * -from .constants import * class Provider(ChangeLoggedModel, CustomFieldModel): @@ -231,7 +230,7 @@ class CircuitTermination(CableTermination): ) term_side = models.CharField( max_length=1, - choices=TERM_SIDE_CHOICES, + choices=CircuitTerminationSideChoices, verbose_name='Termination' ) site = models.ForeignKey( diff --git a/netbox/circuits/tests/test_api.py b/netbox/circuits/tests/test_api.py index 86bf814a8..c6100d825 100644 --- a/netbox/circuits/tests/test_api.py +++ b/netbox/circuits/tests/test_api.py @@ -1,8 +1,7 @@ from django.urls import reverse from rest_framework import status -from circuits.choices import CircuitStatusChoices -from circuits.constants import TERM_SIDE_A, TERM_SIDE_Z +from circuits.choices import * from circuits.models import Circuit, CircuitTermination, CircuitType, Provider from dcim.models import Site from extras.constants import GRAPH_TYPE_PROVIDER @@ -337,16 +336,28 @@ class CircuitTerminationTest(APITestCase): self.circuit2 = Circuit.objects.create(cid='TEST0002', provider=provider, type=circuittype) self.circuit3 = Circuit.objects.create(cid='TEST0003', provider=provider, type=circuittype) self.circuittermination1 = CircuitTermination.objects.create( - circuit=self.circuit1, term_side=TERM_SIDE_A, site=self.site1, port_speed=1000000 + circuit=self.circuit1, + term_side=CircuitTerminationSideChoices.SIDE_A, + site=self.site1, + port_speed=1000000 ) self.circuittermination2 = CircuitTermination.objects.create( - circuit=self.circuit1, term_side=TERM_SIDE_Z, site=self.site2, port_speed=1000000 + circuit=self.circuit1, + term_side=CircuitTerminationSideChoices.SIDE_Z, + site=self.site2, + port_speed=1000000 ) self.circuittermination3 = CircuitTermination.objects.create( - circuit=self.circuit2, term_side=TERM_SIDE_A, site=self.site1, port_speed=1000000 + circuit=self.circuit2, + term_side=CircuitTerminationSideChoices.SIDE_A, + site=self.site1, + port_speed=1000000 ) self.circuittermination4 = CircuitTermination.objects.create( - circuit=self.circuit2, term_side=TERM_SIDE_Z, site=self.site2, port_speed=1000000 + circuit=self.circuit2, + term_side=CircuitTerminationSideChoices.SIDE_Z, + site=self.site2, + port_speed=1000000 ) def test_get_circuittermination(self): @@ -367,7 +378,7 @@ class CircuitTerminationTest(APITestCase): data = { 'circuit': self.circuit3.pk, - 'term_side': TERM_SIDE_A, + 'term_side': CircuitTerminationSideChoices.SIDE_A, 'site': self.site1.pk, 'port_speed': 1000000, } @@ -386,12 +397,15 @@ class CircuitTerminationTest(APITestCase): def test_update_circuittermination(self): circuittermination5 = CircuitTermination.objects.create( - circuit=self.circuit3, term_side=TERM_SIDE_A, site=self.site1, port_speed=1000000 + circuit=self.circuit3, + term_side=CircuitTerminationSideChoices.SIDE_A, + site=self.site1, + port_speed=1000000 ) data = { 'circuit': self.circuit3.pk, - 'term_side': TERM_SIDE_Z, + 'term_side': CircuitTerminationSideChoices.SIDE_Z, 'site': self.site2.pk, 'port_speed': 1000000, } diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 655b714d7..31b167a65 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -12,7 +12,7 @@ from utilities.views import ( BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView, ) from . import filters, forms, tables -from .constants import TERM_SIDE_A, TERM_SIDE_Z +from .choices import CircuitTerminationSideChoices from .models import Circuit, CircuitTermination, CircuitType, Provider @@ -151,12 +151,12 @@ class CircuitView(PermissionRequiredMixin, View): termination_a = CircuitTermination.objects.prefetch_related( 'site__region', 'connected_endpoint__device' ).filter( - circuit=circuit, term_side=TERM_SIDE_A + circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A ).first() termination_z = CircuitTermination.objects.prefetch_related( 'site__region', 'connected_endpoint__device' ).filter( - circuit=circuit, term_side=TERM_SIDE_Z + circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z ).first() return render(request, 'circuits/circuit.html', { @@ -212,8 +212,12 @@ class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): def circuit_terminations_swap(request, pk): circuit = get_object_or_404(Circuit, pk=pk) - termination_a = CircuitTermination.objects.filter(circuit=circuit, term_side=TERM_SIDE_A).first() - termination_z = CircuitTermination.objects.filter(circuit=circuit, term_side=TERM_SIDE_Z).first() + termination_a = CircuitTermination.objects.filter( + circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A + ).first() + termination_z = CircuitTermination.objects.filter( + circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z + ).first() if not termination_a and not termination_z: messages.error(request, "No terminations have been defined for circuit {}.".format(circuit)) return redirect('circuits:circuit', pk=circuit.pk)