From 85347d9675473a76d1a0829d1a7610bc3ecbd890 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 20 Oct 2017 16:27:19 -0400 Subject: [PATCH] Closes #999: Display devices on which circuits are terminated in circuits list --- netbox/circuits/tables.py | 29 ++++++++++++++++++++--------- netbox/circuits/views.py | 6 +++++- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index 58775b378..bf628e6f8 100644 --- a/netbox/circuits/tables.py +++ b/netbox/circuits/tables.py @@ -3,6 +3,8 @@ from __future__ import unicode_literals import django_tables2 as tables from django_tables2.utils import Accessor +from django.utils.safestring import mark_safe + from utilities.tables import BaseTable, ToggleColumn from .models import Circuit, CircuitType, Provider @@ -14,6 +16,21 @@ CIRCUITTYPE_ACTIONS = """ """ +class CircuitTerminationColumn(tables.Column): + + def render(self, value): + if value.interface: + return mark_safe('{}'.format( + value.interface.device.get_absolute_url(), + value.site, + value.interface.device + )) + return mark_safe('{}'.format( + value.site.get_absolute_url(), + value.site + )) + + # # Providers # @@ -61,15 +78,9 @@ class CircuitTable(BaseTable): cid = tables.LinkColumn(verbose_name='ID') provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')]) tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')]) - a_side = tables.LinkColumn( - 'dcim:site', accessor=Accessor('termination_a.site'), orderable=False, - args=[Accessor('termination_a.site.slug')] - ) - z_side = tables.LinkColumn( - 'dcim:site', accessor=Accessor('termination_z.site'), orderable=False, - args=[Accessor('termination_z.site.slug')] - ) + termination_a = CircuitTerminationColumn(orderable=False, verbose_name='A Side') + termination_z = CircuitTerminationColumn(orderable=False, verbose_name='Z Side') class Meta(BaseTable.Meta): model = Circuit - fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'description') + fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'termination_a', 'termination_z', 'description') diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 4a49e713a..d8910ba29 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -134,7 +134,11 @@ class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView): # class CircuitListView(ObjectListView): - queryset = Circuit.objects.select_related('provider', 'type', 'tenant').prefetch_related('terminations__site') + queryset = Circuit.objects.select_related( + 'provider', 'type', 'tenant' + ).prefetch_related( + 'terminations__site', 'terminations__interface__device' + ) filter = filters.CircuitFilter filter_form = forms.CircuitFilterForm table = tables.CircuitTable