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 @@
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 %}