Răsfoiți Sursa

Move CircuitTermination.term_side choices to a ChoiceSet

Jeremy Stretch 6 ani în urmă
părinte
comite
4e2863e4ec

+ 19 - 0
netbox/circuits/choices.py

@@ -1,6 +1,10 @@
 from utilities.choices import ChoiceSet
 from utilities.choices import ChoiceSet
 
 
 
 
+#
+# Circuits
+#
+
 class CircuitStatusChoices(ChoiceSet):
 class CircuitStatusChoices(ChoiceSet):
 
 
     STATUS_DEPROVISIONING = 'deprovisioning'
     STATUS_DEPROVISIONING = 'deprovisioning'
@@ -27,3 +31,18 @@ class CircuitStatusChoices(ChoiceSet):
         STATUS_OFFLINE: 4,
         STATUS_OFFLINE: 4,
         STATUS_DECOMMISSIONED: 5,
         STATUS_DECOMMISSIONED: 5,
     }
     }
+
+
+#
+# CircuitTerminations
+#
+
+class CircuitTerminationSideChoices(ChoiceSet):
+
+    SIDE_A = 'A'
+    SIDE_Z = 'Z'
+
+    CHOICES = (
+        (SIDE_A, 'A'),
+        (SIDE_Z, 'Z')
+    )

+ 0 - 7
netbox/circuits/constants.py

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

+ 0 - 1
netbox/circuits/filters.py

@@ -6,7 +6,6 @@ from extras.filters import CustomFieldFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
 from .choices import *
 from .choices import *
-from .constants import *
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 
 

+ 0 - 1
netbox/circuits/forms.py

@@ -10,7 +10,6 @@ from utilities.forms import (
     FilterChoiceField, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple
     FilterChoiceField, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple
 )
 )
 from .choices import CircuitStatusChoices
 from .choices import CircuitStatusChoices
-from .constants import *
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 
 

+ 2 - 3
netbox/circuits/models.py

@@ -3,14 +3,13 @@ from django.db import models
 from django.urls import reverse
 from django.urls import reverse
 from taggit.managers import TaggableManager
 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.fields import ASNField
 from dcim.models import CableTermination
 from dcim.models import CableTermination
 from extras.models import CustomFieldModel, ObjectChange, TaggedItem
 from extras.models import CustomFieldModel, ObjectChange, TaggedItem
 from utilities.models import ChangeLoggedModel
 from utilities.models import ChangeLoggedModel
 from utilities.utils import serialize_object
 from utilities.utils import serialize_object
 from .choices import *
 from .choices import *
-from .constants import *
 
 
 
 
 class Provider(ChangeLoggedModel, CustomFieldModel):
 class Provider(ChangeLoggedModel, CustomFieldModel):
@@ -231,7 +230,7 @@ class CircuitTermination(CableTermination):
     )
     )
     term_side = models.CharField(
     term_side = models.CharField(
         max_length=1,
         max_length=1,
-        choices=TERM_SIDE_CHOICES,
+        choices=CircuitTerminationSideChoices,
         verbose_name='Termination'
         verbose_name='Termination'
     )
     )
     site = models.ForeignKey(
     site = models.ForeignKey(

+ 23 - 9
netbox/circuits/tests/test_api.py

@@ -1,8 +1,7 @@
 from django.urls import reverse
 from django.urls import reverse
 from rest_framework import status
 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 circuits.models import Circuit, CircuitTermination, CircuitType, Provider
 from dcim.models import Site
 from dcim.models import Site
 from extras.constants import GRAPH_TYPE_PROVIDER
 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.circuit2 = Circuit.objects.create(cid='TEST0002', provider=provider, type=circuittype)
         self.circuit3 = Circuit.objects.create(cid='TEST0003', provider=provider, type=circuittype)
         self.circuit3 = Circuit.objects.create(cid='TEST0003', provider=provider, type=circuittype)
         self.circuittermination1 = CircuitTermination.objects.create(
         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(
         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(
         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(
         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):
     def test_get_circuittermination(self):
@@ -367,7 +378,7 @@ class CircuitTerminationTest(APITestCase):
 
 
         data = {
         data = {
             'circuit': self.circuit3.pk,
             'circuit': self.circuit3.pk,
-            'term_side': TERM_SIDE_A,
+            'term_side': CircuitTerminationSideChoices.SIDE_A,
             'site': self.site1.pk,
             'site': self.site1.pk,
             'port_speed': 1000000,
             'port_speed': 1000000,
         }
         }
@@ -386,12 +397,15 @@ class CircuitTerminationTest(APITestCase):
     def test_update_circuittermination(self):
     def test_update_circuittermination(self):
 
 
         circuittermination5 = CircuitTermination.objects.create(
         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 = {
         data = {
             'circuit': self.circuit3.pk,
             'circuit': self.circuit3.pk,
-            'term_side': TERM_SIDE_Z,
+            'term_side': CircuitTerminationSideChoices.SIDE_Z,
             'site': self.site2.pk,
             'site': self.site2.pk,
             'port_speed': 1000000,
             'port_speed': 1000000,
         }
         }

+ 9 - 5
netbox/circuits/views.py

@@ -12,7 +12,7 @@ from utilities.views import (
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
 )
 from . import filters, forms, tables
 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
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 
 
@@ -151,12 +151,12 @@ class CircuitView(PermissionRequiredMixin, View):
         termination_a = CircuitTermination.objects.prefetch_related(
         termination_a = CircuitTermination.objects.prefetch_related(
             'site__region', 'connected_endpoint__device'
             'site__region', 'connected_endpoint__device'
         ).filter(
         ).filter(
-            circuit=circuit, term_side=TERM_SIDE_A
+            circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_A
         ).first()
         ).first()
         termination_z = CircuitTermination.objects.prefetch_related(
         termination_z = CircuitTermination.objects.prefetch_related(
             'site__region', 'connected_endpoint__device'
             'site__region', 'connected_endpoint__device'
         ).filter(
         ).filter(
-            circuit=circuit, term_side=TERM_SIDE_Z
+            circuit=circuit, term_side=CircuitTerminationSideChoices.SIDE_Z
         ).first()
         ).first()
 
 
         return render(request, 'circuits/circuit.html', {
         return render(request, 'circuits/circuit.html', {
@@ -212,8 +212,12 @@ class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 def circuit_terminations_swap(request, pk):
 def circuit_terminations_swap(request, pk):
 
 
     circuit = get_object_or_404(Circuit, pk=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:
     if not termination_a and not termination_z:
         messages.error(request, "No terminations have been defined for circuit {}.".format(circuit))
         messages.error(request, "No terminations have been defined for circuit {}.".format(circuit))
         return redirect('circuits:circuit', pk=circuit.pk)
         return redirect('circuits:circuit', pk=circuit.pk)