mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #999: Display devices on which circuits are terminated in circuits list
This commit is contained in:
@ -3,6 +3,8 @@ from __future__ import unicode_literals
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django_tables2.utils import Accessor
|
from django_tables2.utils import Accessor
|
||||||
|
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
from utilities.tables import BaseTable, ToggleColumn
|
from utilities.tables import BaseTable, ToggleColumn
|
||||||
from .models import Circuit, CircuitType, Provider
|
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('<a href="{}" title="{}">{}</a>'.format(
|
||||||
|
value.interface.device.get_absolute_url(),
|
||||||
|
value.site,
|
||||||
|
value.interface.device
|
||||||
|
))
|
||||||
|
return mark_safe('<a href="{}">{}</a>'.format(
|
||||||
|
value.site.get_absolute_url(),
|
||||||
|
value.site
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Providers
|
# Providers
|
||||||
#
|
#
|
||||||
@ -61,15 +78,9 @@ class CircuitTable(BaseTable):
|
|||||||
cid = tables.LinkColumn(verbose_name='ID')
|
cid = tables.LinkColumn(verbose_name='ID')
|
||||||
provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
|
provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
|
||||||
tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')])
|
tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')])
|
||||||
a_side = tables.LinkColumn(
|
termination_a = CircuitTerminationColumn(orderable=False, verbose_name='A Side')
|
||||||
'dcim:site', accessor=Accessor('termination_a.site'), orderable=False,
|
termination_z = CircuitTerminationColumn(orderable=False, verbose_name='Z Side')
|
||||||
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')]
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta(BaseTable.Meta):
|
class Meta(BaseTable.Meta):
|
||||||
model = Circuit
|
model = Circuit
|
||||||
fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'description')
|
fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'termination_a', 'termination_z', 'description')
|
||||||
|
@ -134,7 +134,11 @@ class CircuitTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class CircuitListView(ObjectListView):
|
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 = filters.CircuitFilter
|
||||||
filter_form = forms.CircuitFilterForm
|
filter_form = forms.CircuitFilterForm
|
||||||
table = tables.CircuitTable
|
table = tables.CircuitTable
|
||||||
|
Reference in New Issue
Block a user