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

Closes #5225: CircuitTermination port_speed is now optional

Jeremy Stretch 5 лет назад
Родитель
Сommit
30778a9c40

+ 2 - 0
docs/release-notes/version-2.10.md

@@ -57,6 +57,7 @@ All end-to-end cable paths are now cached using the new CablePath model. This al
 * [#4360](https://github.com/netbox-community/netbox/issues/4360) - Remove support for the Django template language from export templates
 * [#4878](https://github.com/netbox-community/netbox/issues/4878) - Custom field data is now stored directly on each object
 * [#4941](https://github.com/netbox-community/netbox/issues/4941) - `commit` argument is now required argument in a custom script's `run()` method
+* [#5225](https://github.com/netbox-community/netbox/issues/5225) - Circuit termination port speed is now an optional field
 
 ### REST API Changes
 
@@ -65,6 +66,7 @@ All end-to-end cable paths are now cached using the new CablePath model. This al
   * Added the `/trace/` endpoint
   * Replaced `connection_status` with `connected_endpoint_reachable` (boolean)
   * Added `cable_peer` and `cable_peer_type`
+  * `port_speed` may now be null
 * dcim.Cable: Added `custom_fields`
 * dcim.ConsolePort:
   * Replaced `connection_status` with `connected_endpoint_reachable` (boolean)

+ 18 - 0
netbox/circuits/migrations/0023_circuittermination_port_speed_optional.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.1 on 2020-10-09 17:54
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('circuits', '0022_cablepath'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='circuittermination',
+            name='port_speed',
+            field=models.PositiveIntegerField(blank=True, null=True),
+        ),
+    ]

+ 3 - 1
netbox/circuits/models.py

@@ -248,7 +248,9 @@ class CircuitTermination(PathEndpoint, CableTermination):
         related_name='circuit_terminations'
     )
     port_speed = models.PositiveIntegerField(
-        verbose_name='Port speed (Kbps)'
+        verbose_name='Port speed (Kbps)',
+        blank=True,
+        null=True
     )
     upstream_speed = models.PositiveIntegerField(
         blank=True,

+ 4 - 4
netbox/circuits/tests/test_api.py

@@ -153,10 +153,10 @@ class CircuitTerminationTest(APIViewTestCases.APIViewTestCase):
         Circuit.objects.bulk_create(circuits)
 
         circuit_terminations = (
-            CircuitTermination(circuit=circuits[0], site=sites[0], port_speed=100000, term_side=SIDE_A),
-            CircuitTermination(circuit=circuits[0], site=sites[1], port_speed=100000, term_side=SIDE_Z),
-            CircuitTermination(circuit=circuits[1], site=sites[0], port_speed=100000, term_side=SIDE_A),
-            CircuitTermination(circuit=circuits[1], site=sites[1], port_speed=100000, term_side=SIDE_Z),
+            CircuitTermination(circuit=circuits[0], site=sites[0], term_side=SIDE_A),
+            CircuitTermination(circuit=circuits[0], site=sites[1], term_side=SIDE_Z),
+            CircuitTermination(circuit=circuits[1], site=sites[0], term_side=SIDE_A),
+            CircuitTermination(circuit=circuits[1], site=sites[1], term_side=SIDE_Z),
         )
         CircuitTermination.objects.bulk_create(circuit_terminations)
 

+ 5 - 5
netbox/circuits/tests/test_filters.py

@@ -50,8 +50,8 @@ class ProviderTestCase(TestCase):
         Circuit.objects.bulk_create(circuits)
 
         CircuitTermination.objects.bulk_create((
-            CircuitTermination(circuit=circuits[0], site=sites[0], term_side='A', port_speed=1000),
-            CircuitTermination(circuit=circuits[1], site=sites[0], term_side='A', port_speed=1000),
+            CircuitTermination(circuit=circuits[0], site=sites[0], term_side='A'),
+            CircuitTermination(circuit=circuits[1], site=sites[0], term_side='A'),
         ))
 
     def test_id(self):
@@ -176,9 +176,9 @@ class CircuitTestCase(TestCase):
         Circuit.objects.bulk_create(circuits)
 
         circuit_terminations = ((
-            CircuitTermination(circuit=circuits[0], site=sites[0], term_side='A', port_speed=1000),
-            CircuitTermination(circuit=circuits[1], site=sites[1], term_side='A', port_speed=1000),
-            CircuitTermination(circuit=circuits[2], site=sites[2], term_side='A', port_speed=1000),
+            CircuitTermination(circuit=circuits[0], site=sites[0], term_side='A'),
+            CircuitTermination(circuit=circuits[1], site=sites[1], term_side='A'),
+            CircuitTermination(circuit=circuits[2], site=sites[2], term_side='A'),
         ))
         CircuitTermination.objects.bulk_create(circuit_terminations)
 

+ 1 - 3
netbox/dcim/tests/test_cablepaths.py

@@ -234,9 +234,7 @@ class CablePathTestCase(TestCase):
         [IF1] --C1-- [CT1A]
         """
         interface1 = Interface.objects.create(device=self.device, name='Interface 1')
-        circuittermination1 = CircuitTermination.objects.create(
-            circuit=self.circuit, site=self.site, term_side='A', port_speed=1000
-        )
+        circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='A')
 
         # Create cable 1
         cable1 = Cable(termination_a=interface1, termination_b=circuittermination1)

+ 2 - 2
netbox/dcim/tests/test_models.py

@@ -390,8 +390,8 @@ class CableTestCase(TestCase):
         self.provider = Provider.objects.create(name='Provider 1', slug='provider-1')
         self.circuittype = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1')
         self.circuit = Circuit.objects.create(provider=self.provider, type=self.circuittype, cid='1')
-        self.circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=site, term_side='A', port_speed=1000)
-        self.circuittermination2 = CircuitTermination.objects.create(circuit=self.circuit, site=site, term_side='Z', port_speed=1000)
+        self.circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=site, term_side='A')
+        self.circuittermination2 = CircuitTermination.objects.create(circuit=self.circuit, site=site, term_side='Z')
 
     def test_cable_creation(self):
         """

+ 1 - 1
netbox/templates/circuits/circuittermination_edit.html

@@ -47,7 +47,7 @@
                     <div class="panel-heading"><strong>Termination Details</strong></div>
                     <div class="panel-body">
                         <div class="form-group">
-                            <label class="col-md-3 control-label required" for="id_port_speed">{{ form.port_speed.label }}</label>
+                            <label class="col-md-3 control-label" for="id_port_speed">{{ form.port_speed.label }}</label>
                             <div class="col-md-9">
                                 <div class="input-group">
                                     {{ form.port_speed }}

+ 4 - 2
netbox/templates/circuits/inc/circuit_termination.html

@@ -83,11 +83,13 @@
             <tr>
                 <td>Speed</td>
                 <td>
-                    {% if termination.upstream_speed %}
+                    {% if termination.port_speed and termination.upstream_speed %}
                         <i class="fa fa-arrow-down" title="Downstream"></i> {{ termination.port_speed|humanize_speed }} &nbsp;
                         <i class="fa fa-arrow-up" title="Upstream"></i> {{ termination.upstream_speed|humanize_speed }}
-                    {% else %}
+                    {% elif termination.port_speed %}
                         {{ termination.port_speed|humanize_speed }}
+                    {% else %}
+                        <span class="text-muted">&mdash;</span>
                     {% endif %}
                 </td>
             </tr>