diff --git a/netbox/circuits/admin.py b/netbox/circuits/admin.py index 090ad7d39..31caecdec 100644 --- a/netbox/circuits/admin.py +++ b/netbox/circuits/admin.py @@ -21,10 +21,11 @@ class CircuitTypeAdmin(admin.ModelAdmin): @admin.register(Circuit) class CircuitAdmin(admin.ModelAdmin): - list_display = ['cid', 'provider', 'type', 'site', 'install_date', 'port_speed', 'commit_rate', 'xconnect_id'] - list_filter = ['provider'] + list_display = ['cid', 'provider', 'type', 'tenant', 'site', 'install_date', 'port_speed', 'commit_rate', + 'xconnect_id'] + list_filter = ['provider', 'type', 'tenant'] exclude = ['interface'] def get_queryset(self, request): qs = super(CircuitAdmin, self).get_queryset(request) - return qs.select_related('provider', 'type', 'site') + return qs.select_related('provider', 'type', 'tenant', 'site') diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index ebedda878..0efedd04c 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -2,6 +2,7 @@ from rest_framework import serializers from circuits.models import Provider, CircuitType, Circuit from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer +from tenancy.api.serializers import TenantNestedSerializer # @@ -45,13 +46,14 @@ class CircuitTypeNestedSerializer(CircuitTypeSerializer): class CircuitSerializer(serializers.ModelSerializer): provider = ProviderNestedSerializer() type = CircuitTypeNestedSerializer() + tenant = TenantNestedSerializer() site = SiteNestedSerializer() interface = InterfaceNestedSerializer() class Meta: model = Circuit - fields = ['id', 'cid', 'provider', 'type', 'site', 'interface', 'install_date', 'port_speed', 'commit_rate', - 'xconnect_id', 'comments'] + fields = ['id', 'cid', 'provider', 'type', 'tenant', 'site', 'interface', 'install_date', 'port_speed', + 'commit_rate', 'xconnect_id', 'comments'] class CircuitNestedSerializer(CircuitSerializer): diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index 263225aae..7d65ca192 100644 --- a/netbox/circuits/forms.py +++ b/netbox/circuits/forms.py @@ -99,7 +99,7 @@ class CircuitForm(forms.ModelForm, BootstrapMixin): class Meta: model = Circuit fields = [ - 'cid', 'type', 'provider', 'site', 'rack', 'device', 'livesearch', 'interface', 'install_date', + 'cid', 'type', 'provider', 'tenant', 'site', 'rack', 'device', 'livesearch', 'interface', 'install_date', 'port_speed', 'commit_rate', 'xconnect_id', 'pp_info', 'comments' ] help_texts = { diff --git a/netbox/circuits/migrations/0004_circuit_add_tenant.py b/netbox/circuits/migrations/0004_circuit_add_tenant.py new file mode 100644 index 000000000..87988bb43 --- /dev/null +++ b/netbox/circuits/migrations/0004_circuit_add_tenant.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.8 on 2016-07-26 19:29 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0001_initial'), + ('circuits', '0003_provider_32bit_asn_support'), + ] + + operations = [ + migrations.AddField( + model_name='circuit', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='tenancy.Tenant'), + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index cd5d760b3..b3db5a6ae 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -3,6 +3,7 @@ from django.db import models from dcim.fields import ASNField from dcim.models import Site, Interface +from tenancy.models import Tenant from utilities.models import CreatedUpdatedModel @@ -66,6 +67,7 @@ class Circuit(CreatedUpdatedModel): cid = models.CharField(max_length=50, verbose_name='Circuit ID') provider = models.ForeignKey('Provider', related_name='circuits', on_delete=models.PROTECT) type = models.ForeignKey('CircuitType', related_name='circuits', on_delete=models.PROTECT) + tenant = models.ForeignKey(Tenant, related_name='circuits', blank=True, null=True, on_delete=models.PROTECT) site = models.ForeignKey(Site, related_name='circuits', on_delete=models.PROTECT) interface = models.OneToOneField(Interface, related_name='circuit', blank=True, null=True) install_date = models.DateField(blank=True, null=True, verbose_name='Date installed') diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index c13727cb7..0fa236fac 100644 --- a/netbox/circuits/tables.py +++ b/netbox/circuits/tables.py @@ -53,10 +53,11 @@ class CircuitTable(BaseTable): cid = tables.LinkColumn('circuits:circuit', args=[Accessor('pk')], verbose_name='ID') type = tables.Column(verbose_name='Type') provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')], verbose_name='Provider') + tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') port_speed_human = tables.Column(verbose_name='Port Speed') commit_rate_human = tables.Column(verbose_name='Commit Rate') class Meta(BaseTable.Meta): model = Circuit - fields = ('pk', 'cid', 'type', 'provider', 'site', 'port_speed_human', 'commit_rate_human') + fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'site', 'port_speed_human', 'commit_rate_human') diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 283146396..db42a6db9 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -109,7 +109,7 @@ class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # class CircuitListView(ObjectListView): - queryset = Circuit.objects.select_related('provider', 'type', 'site') + queryset = Circuit.objects.select_related('provider', 'type', 'tenant', 'site') filter = filters.CircuitFilter filter_form = forms.CircuitFilterForm table = tables.CircuitTable diff --git a/netbox/templates/circuits/circuit.html b/netbox/templates/circuits/circuit.html index cbae7aeac..c6fcbfd87 100644 --- a/netbox/templates/circuits/circuit.html +++ b/netbox/templates/circuits/circuit.html @@ -57,6 +57,45 @@
Site | @@ -75,36 +114,36 @@ | |
Install Date | -{{ circuit.install_date }} | -|
Port Speed | -{{ circuit.port_speed_human }} | -|
Commit Rate | -{% if circuit.commit_rate %}{{ circuit.commit_rate_human }}{% else %}N/A{% endif %} | ++ {% if circuit.install_date %} + {{ circuit.install_date }} + {% else %} + N/A + {% endif %} + |
Cross-Connect | -{{ circuit.xconnect_id }} | ++ {% if circuit.xconnect_id %} + {{ circuit.xconnect_id }} + {% else %} + N/A + {% endif %} + |
Patch Panel/Port | -{{ circuit.pp_info }} | -|
Created | -{{ circuit.created }} | -|
Last Updated | -{{ circuit.last_updated }} | ++ {% if circuit.pp_info %} + {{ circuit.pp_info }} + {% else %} + N/A + {% endif %} + |