From d463161619d5749a6d7f629f5aa32d2c5272ccf7 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 8 Aug 2016 16:51:19 -0400 Subject: [PATCH] Closes #149: Added upstream_speed field to Circuit --- netbox/circuits/admin.py | 4 ++-- netbox/circuits/api/serializers.py | 2 +- netbox/circuits/forms.py | 6 +++--- .../0005_circuit_add_upstream_speed.py | 20 +++++++++++++++++++ netbox/circuits/models.py | 13 ++++++++++-- netbox/templates/circuits/circuit.html | 9 +++++---- netbox/templates/circuits/circuit_edit.html | 1 + netbox/templates/circuits/circuit_import.html | 9 +++++++-- 8 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 netbox/circuits/migrations/0005_circuit_add_upstream_speed.py diff --git a/netbox/circuits/admin.py b/netbox/circuits/admin.py index 31caecdec..97711b7a8 100644 --- a/netbox/circuits/admin.py +++ b/netbox/circuits/admin.py @@ -21,8 +21,8 @@ class CircuitTypeAdmin(admin.ModelAdmin): @admin.register(Circuit) class CircuitAdmin(admin.ModelAdmin): - list_display = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed', 'commit_rate', - 'xconnect_id'] + list_display = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed_human', + 'upstream_speed_human', 'commit_rate_human', 'xconnect_id'] list_filter = ['provider', 'type', 'tenant'] exclude = ['interface'] diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index 0efedd04c..ed6033963 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -53,7 +53,7 @@ class CircuitSerializer(serializers.ModelSerializer): class Meta: model = Circuit fields = ['id', 'cid', 'provider', 'type', 'tenant', 'site', 'interface', 'install_date', 'port_speed', - 'commit_rate', 'xconnect_id', 'comments'] + 'upstream_speed', 'commit_rate', 'xconnect_id', 'comments'] class CircuitNestedSerializer(CircuitSerializer): diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index b5152e08c..a44dd763e 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -102,7 +102,7 @@ class CircuitForm(forms.ModelForm, BootstrapMixin): model = Circuit fields = [ 'cid', 'type', 'provider', 'tenant', 'site', 'rack', 'device', 'livesearch', 'interface', 'install_date', - 'port_speed', 'commit_rate', 'xconnect_id', 'pp_info', 'comments' + 'port_speed', 'upstream_speed', 'commit_rate', 'xconnect_id', 'pp_info', 'comments' ] help_texts = { 'cid': "Unique circuit ID", @@ -169,8 +169,8 @@ class CircuitFromCSVForm(forms.ModelForm): class Meta: model = Circuit - fields = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed', 'commit_rate', - 'xconnect_id', 'pp_info'] + fields = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed', 'upstream_speed', + 'commit_rate', 'xconnect_id', 'pp_info'] class CircuitImportForm(BulkImportForm, BootstrapMixin): diff --git a/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py b/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py new file mode 100644 index 000000000..f309cb2d8 --- /dev/null +++ b/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.8 on 2016-08-08 20:24 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('circuits', '0004_circuit_add_tenant'), + ] + + operations = [ + migrations.AddField( + model_name='circuit', + name='upstream_speed', + field=models.PositiveIntegerField(blank=True, help_text=b'Upstream speed, if different from port speed', null=True, verbose_name=b'Upstream speed (Kbps)'), + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index 15dbea216..00367a27a 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -72,6 +72,8 @@ class Circuit(CreatedUpdatedModel): interface = models.OneToOneField(Interface, related_name='circuit', blank=True, null=True) install_date = models.DateField(blank=True, null=True, verbose_name='Date installed') port_speed = models.PositiveIntegerField(verbose_name='Port speed (Kbps)') + upstream_speed = models.PositiveIntegerField(blank=True, null=True, verbose_name='Upstream speed (Kbps)', + help_text='Upstream speed, if different from port speed') commit_rate = models.PositiveIntegerField(blank=True, null=True, verbose_name='Commit rate (Kbps)') xconnect_id = models.CharField(max_length=50, blank=True, verbose_name='Cross-connect ID') pp_info = models.CharField(max_length=100, blank=True, verbose_name='Patch panel/port(s)') @@ -96,6 +98,7 @@ class Circuit(CreatedUpdatedModel): self.site.name, self.install_date.isoformat() if self.install_date else '', str(self.port_speed), + str(self.upstream_speed), str(self.commit_rate) if self.commit_rate else '', self.xconnect_id, self.pp_info, @@ -116,12 +119,18 @@ class Circuit(CreatedUpdatedModel): else: return '{} Kbps'.format(speed) - @property def port_speed_human(self): return self._humanize_speed(self.port_speed) + port_speed_human.admin_order_field = 'port_speed' + + def upstream_speed_human(self): + if not self.upstream_speed: + return '' + return self._humanize_speed(self.upstream_speed) + upstream_speed_human.admin_order_field = 'upstream_speed' - @property def commit_rate_human(self): if not self.commit_rate: return '' return self._humanize_speed(self.commit_rate) + commit_rate_human.admin_order_field = 'commit_rate' diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index 481953af6..099832054 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -82,12 +82,13 @@ - Port Speed + Speed - {% if circuit.port_speed %} - {{ circuit.port_speed_human }} + {% if circuit.upstream_speed %} + {{ circuit.port_speed_human }}   + {{ circuit.upstream_speed_human }} {% else %} - N/A + {{ circuit.port_speed_human }} {% endif %} diff --git a/netbox/templates/circuits/circuit_edit.html b/netbox/templates/circuits/circuit_edit.html index c489db332..94eead673 100644 --- a/netbox/templates/circuits/circuit_edit.html +++ b/netbox/templates/circuits/circuit_edit.html @@ -19,6 +19,7 @@
Bandwidth
{% render_field form.port_speed %} + {% render_field form.upstream_speed %} {% render_field form.commit_rate %}
diff --git a/netbox/templates/circuits/circuit_import.html b/netbox/templates/circuits/circuit_import.html index 3679dd5f3..269005218 100644 --- a/netbox/templates/circuits/circuit_import.html +++ b/netbox/templates/circuits/circuit_import.html @@ -61,7 +61,12 @@ Port Speed Physical speed in Kbps - 10000 + 100000 + + + Upstream Speed + Upstream speed in Kbps (optional) + 20000 Commit rate @@ -81,7 +86,7 @@

Example

-
IC-603122,TeliaSonera,Transit,Strickland Propane,ASH-4,2016-02-23,10000,2000,937649,PP8371 ports 13/14
+
IC-603122,TeliaSonera,Transit,Strickland Propane,ASH-4,2016-02-23,100000,,2000,937649,PP8371 ports 13/14
{% endblock %}