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