1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Implemented BaseTable for consistent rendering

This commit is contained in:
Jeremy Stretch
2016-06-20 16:34:19 -04:00
parent ccc52348be
commit a29e57319e
5 changed files with 72 additions and 156 deletions

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from utilities.tables import ToggleColumn from utilities.tables import BaseTable, ToggleColumn
from .models import Circuit, CircuitType, Provider from .models import Circuit, CircuitType, Provider
@ -17,46 +17,38 @@ CIRCUITTYPE_EDIT_LINK = """
# Providers # Providers
# #
class ProviderTable(tables.Table): class ProviderTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn('circuits:provider', args=[Accessor('slug')], verbose_name='Name') name = tables.LinkColumn('circuits:provider', args=[Accessor('slug')], verbose_name='Name')
asn = tables.Column(verbose_name='ASN') asn = tables.Column(verbose_name='ASN')
circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits') circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits')
class Meta: class Meta(BaseTable.Meta):
model = Provider model = Provider
fields = ('pk', 'name', 'asn', 'circuit_count') fields = ('pk', 'name', 'asn', 'circuit_count')
empty_text = "No providers found."
attrs = {
'class': 'table table-hover',
}
# #
# Circuit types # Circuit types
# #
class CircuitTypeTable(tables.Table): class CircuitTypeTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
circuit_count = tables.Column(verbose_name='Circuits') circuit_count = tables.Column(verbose_name='Circuits')
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=CIRCUITTYPE_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=CIRCUITTYPE_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = CircuitType model = CircuitType
fields = ('pk', 'name', 'circuit_count', 'slug', 'edit') fields = ('pk', 'name', 'circuit_count', 'slug', 'edit')
empty_text = "No circuit types found."
attrs = {
'class': 'table table-hover',
}
# #
# Circuits # Circuits
# #
class CircuitTable(tables.Table): class CircuitTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
cid = tables.LinkColumn('circuits:circuit', args=[Accessor('pk')], verbose_name='ID') cid = tables.LinkColumn('circuits:circuit', args=[Accessor('pk')], verbose_name='ID')
type = tables.Column(verbose_name='Type') type = tables.Column(verbose_name='Type')
@ -65,10 +57,6 @@ class CircuitTable(tables.Table):
port_speed_human = tables.Column(verbose_name='Port Speed') port_speed_human = tables.Column(verbose_name='Port Speed')
commit_rate_human = tables.Column(verbose_name='Commit Rate') commit_rate_human = tables.Column(verbose_name='Commit Rate')
class Meta: class Meta(BaseTable.Meta):
model = Circuit model = Circuit
fields = ('pk', 'cid', 'type', 'provider', 'site', 'port_speed_human', 'commit_rate_human') fields = ('pk', 'cid', 'type', 'provider', 'site', 'port_speed_human', 'commit_rate_human')
empty_text = "No circuits found."
attrs = {
'class': 'table table-hover',
}

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from utilities.tables import ToggleColumn from utilities.tables import BaseTable, ToggleColumn
from .models import ( from .models import (
ConsolePort, ConsolePortTemplate, ConsoleServerPortTemplate, Device, DeviceRole, DeviceType, InterfaceTemplate, ConsolePort, ConsolePortTemplate, ConsoleServerPortTemplate, Device, DeviceRole, DeviceType, InterfaceTemplate,
@ -52,7 +52,7 @@ STATUS_ICON = """
# Sites # Sites
# #
class SiteTable(tables.Table): class SiteTable(BaseTable):
name = tables.LinkColumn('dcim:site', args=[Accessor('slug')], verbose_name='Name') name = tables.LinkColumn('dcim:site', args=[Accessor('slug')], verbose_name='Name')
facility = tables.Column(verbose_name='Facility') facility = tables.Column(verbose_name='Facility')
asn = tables.Column(verbose_name='ASN') asn = tables.Column(verbose_name='ASN')
@ -62,21 +62,17 @@ class SiteTable(tables.Table):
vlan_count = tables.Column(accessor=Accessor('count_vlans'), orderable=False, verbose_name='VLANs') vlan_count = tables.Column(accessor=Accessor('count_vlans'), orderable=False, verbose_name='VLANs')
circuit_count = tables.Column(accessor=Accessor('count_circuits'), orderable=False, verbose_name='Circuits') circuit_count = tables.Column(accessor=Accessor('count_circuits'), orderable=False, verbose_name='Circuits')
class Meta: class Meta(BaseTable.Meta):
model = Site model = Site
fields = ('name', 'facility', 'asn', 'rack_count', 'device_count', 'prefix_count', 'vlan_count', fields = ('name', 'facility', 'asn', 'rack_count', 'device_count', 'prefix_count', 'vlan_count',
'circuit_count') 'circuit_count')
empty_text = "No sites have been defined."
attrs = {
'class': 'table table-hover',
}
# #
# Rack groups # Rack groups
# #
class RackGroupTable(tables.Table): class RackGroupTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
@ -84,20 +80,16 @@ class RackGroupTable(tables.Table):
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=RACKGROUP_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=RACKGROUP_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = RackGroup model = RackGroup
fields = ('pk', 'name', 'site', 'rack_count', 'slug', 'edit') fields = ('pk', 'name', 'site', 'rack_count', 'slug', 'edit')
empty_text = "No rack groups were found."
attrs = {
'class': 'table table-hover',
}
# #
# Racks # Racks
# #
class RackTable(tables.Table): class RackTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn('dcim:rack', args=[Accessor('pk')], verbose_name='Name') name = tables.LinkColumn('dcim:rack', args=[Accessor('pk')], verbose_name='Name')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
@ -106,50 +98,38 @@ class RackTable(tables.Table):
u_height = tables.Column(verbose_name='Height (U)') u_height = tables.Column(verbose_name='Height (U)')
devices = tables.Column(accessor=Accessor('device_count'), verbose_name='Devices') devices = tables.Column(accessor=Accessor('device_count'), verbose_name='Devices')
class Meta: class Meta(BaseTable.Meta):
model = Rack model = Rack
fields = ('pk', 'name', 'site', 'group', 'facility_id', 'u_height', 'devices') fields = ('pk', 'name', 'site', 'group', 'facility_id', 'u_height', 'devices')
empty_text = "No racks were found."
attrs = {
'class': 'table table-hover',
}
# #
# Manufacturers # Manufacturers
# #
class ManufacturerTable(tables.Table): class ManufacturerTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
devicetype_count = tables.Column(verbose_name='Device Types') devicetype_count = tables.Column(verbose_name='Device Types')
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=MANUFACTURER_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=MANUFACTURER_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = Manufacturer model = Manufacturer
fields = ('pk', 'name', 'devicetype_count', 'slug', 'edit') fields = ('pk', 'name', 'devicetype_count', 'slug', 'edit')
empty_text = "No device types were found."
attrs = {
'class': 'table table-hover',
}
# #
# Device types # Device types
# #
class DeviceTypeTable(tables.Table): class DeviceTypeTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
model = tables.LinkColumn('dcim:devicetype', args=[Accessor('pk')], verbose_name='Device Type') model = tables.LinkColumn('dcim:devicetype', args=[Accessor('pk')], verbose_name='Device Type')
class Meta: class Meta(BaseTable.Meta):
model = DeviceType model = DeviceType
fields = ('pk', 'model', 'manufacturer', 'u_height') fields = ('pk', 'model', 'manufacturer', 'u_height')
empty_text = "No device types were found."
attrs = {
'class': 'table table-hover',
}
# #
@ -225,7 +205,7 @@ class InterfaceTemplateTable(tables.Table):
# Device roles # Device roles
# #
class DeviceRoleTable(tables.Table): class DeviceRoleTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
device_count = tables.Column(verbose_name='Devices') device_count = tables.Column(verbose_name='Devices')
@ -233,40 +213,32 @@ class DeviceRoleTable(tables.Table):
color = tables.Column(verbose_name='Color') color = tables.Column(verbose_name='Color')
edit = tables.TemplateColumn(template_code=DEVICEROLE_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=DEVICEROLE_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = DeviceRole model = DeviceRole
fields = ('pk', 'name', 'device_count', 'slug', 'color') fields = ('pk', 'name', 'device_count', 'slug', 'color')
empty_text = "No device roles were found."
attrs = {
'class': 'table table-hover',
}
# #
# Platforms # Platforms
# #
class PlatformTable(tables.Table): class PlatformTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
device_count = tables.Column(verbose_name='Devices') device_count = tables.Column(verbose_name='Devices')
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=PLATFORM_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=PLATFORM_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = Platform model = Platform
fields = ('pk', 'name', 'device_count', 'slug', 'edit') fields = ('pk', 'name', 'device_count', 'slug', 'edit')
empty_text = "No platforms were found."
attrs = {
'class': 'table table-hover',
}
# #
# Devices # Devices
# #
class DeviceTable(tables.Table): class DeviceTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
status = tables.TemplateColumn(template_code=STATUS_ICON, verbose_name='') status = tables.TemplateColumn(template_code=STATUS_ICON, verbose_name='')
name = tables.TemplateColumn(template_code=DEVICE_LINK, verbose_name='Name') name = tables.TemplateColumn(template_code=DEVICE_LINK, verbose_name='Name')
@ -277,16 +249,12 @@ class DeviceTable(tables.Table):
primary_ip = tables.TemplateColumn(orderable=False, verbose_name='IP Address', primary_ip = tables.TemplateColumn(orderable=False, verbose_name='IP Address',
template_code="{{ record.primary_ip.address.ip }}") template_code="{{ record.primary_ip.address.ip }}")
class Meta: class Meta(BaseTable.Meta):
model = Device model = Device
fields = ('pk', 'name', 'status', 'site', 'rack', 'device_role', 'device_type', 'primary_ip') fields = ('pk', 'name', 'status', 'site', 'rack', 'device_role', 'device_type', 'primary_ip')
empty_text = "No devices were found."
attrs = {
'class': 'table table-hover',
}
class DeviceImportTable(tables.Table): class DeviceImportTable(BaseTable):
name = tables.TemplateColumn(template_code=DEVICE_LINK, verbose_name='Name') name = tables.TemplateColumn(template_code=DEVICE_LINK, verbose_name='Name')
site = tables.Column(accessor=Accessor('rack.site'), verbose_name='Site') site = tables.Column(accessor=Accessor('rack.site'), verbose_name='Site')
rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')], verbose_name='Rack') rack = tables.LinkColumn('dcim:rack', args=[Accessor('rack.pk')], verbose_name='Rack')
@ -294,49 +262,41 @@ class DeviceImportTable(tables.Table):
device_role = tables.Column(verbose_name='Role') device_role = tables.Column(verbose_name='Role')
device_type = tables.Column(verbose_name='Type') device_type = tables.Column(verbose_name='Type')
class Meta: class Meta(BaseTable.Meta):
model = Device model = Device
fields = ('name', 'site', 'rack', 'position', 'device_role', 'device_type') fields = ('name', 'site', 'rack', 'position', 'device_role', 'device_type')
attrs = { empty_text = False
'class': 'table table-hover',
}
# #
# Device connections # Device connections
# #
class ConsoleConnectionTable(tables.Table): class ConsoleConnectionTable(BaseTable):
console_server = tables.LinkColumn('dcim:device', accessor=Accessor('cs_port.device'), console_server = tables.LinkColumn('dcim:device', accessor=Accessor('cs_port.device'),
args=[Accessor('cs_port.device.pk')], verbose_name='Console server') args=[Accessor('cs_port.device.pk')], verbose_name='Console server')
cs_port = tables.Column(verbose_name='Port') cs_port = tables.Column(verbose_name='Port')
device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device') device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device')
name = tables.Column(verbose_name='Console port') name = tables.Column(verbose_name='Console port')
class Meta: class Meta(BaseTable.Meta):
model = ConsolePort model = ConsolePort
fields = ('console_server', 'cs_port', 'device', 'name') fields = ('console_server', 'cs_port', 'device', 'name')
attrs = {
'class': 'table table-hover',
}
class PowerConnectionTable(tables.Table): class PowerConnectionTable(BaseTable):
pdu = tables.LinkColumn('dcim:device', accessor=Accessor('power_outlet.device'), pdu = tables.LinkColumn('dcim:device', accessor=Accessor('power_outlet.device'),
args=[Accessor('power_outlet.device.pk')], verbose_name='PDU') args=[Accessor('power_outlet.device.pk')], verbose_name='PDU')
power_outlet = tables.Column(verbose_name='Outlet') power_outlet = tables.Column(verbose_name='Outlet')
device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device') device = tables.LinkColumn('dcim:device', args=[Accessor('device.pk')], verbose_name='Device')
name = tables.Column(verbose_name='Console port') name = tables.Column(verbose_name='Console port')
class Meta: class Meta(BaseTable.Meta):
model = PowerPort model = PowerPort
fields = ('pdu', 'power_outlet', 'device', 'name') fields = ('pdu', 'power_outlet', 'device', 'name')
attrs = {
'class': 'table table-hover',
}
class InterfaceConnectionTable(tables.Table): class InterfaceConnectionTable(BaseTable):
device_a = tables.LinkColumn('dcim:device', accessor=Accessor('interface_a.device'), device_a = tables.LinkColumn('dcim:device', accessor=Accessor('interface_a.device'),
args=[Accessor('interface_a.device.pk')], verbose_name='Device A') args=[Accessor('interface_a.device.pk')], verbose_name='Device A')
interface_a = tables.Column(verbose_name='Interface A') interface_a = tables.Column(verbose_name='Interface A')
@ -344,9 +304,6 @@ class InterfaceConnectionTable(tables.Table):
args=[Accessor('interface_b.device.pk')], verbose_name='Device B') args=[Accessor('interface_b.device.pk')], verbose_name='Device B')
interface_b = tables.Column(verbose_name='Interface B') interface_b = tables.Column(verbose_name='Interface B')
class Meta: class Meta(BaseTable.Meta):
model = PowerPort model = PowerPort
fields = ('device_a', 'interface_a', 'device_b', 'interface_b') fields = ('device_a', 'interface_a', 'device_b', 'interface_b')
attrs = {
'class': 'table table-hover',
}

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from utilities.tables import ToggleColumn from utilities.tables import BaseTable, ToggleColumn
from .models import Aggregate, IPAddress, Prefix, RIR, Role, VLAN, VRF from .models import Aggregate, IPAddress, Prefix, RIR, Role, VLAN, VRF
@ -55,46 +55,38 @@ STATUS_LABEL = """
# VRFs # VRFs
# #
class VRFTable(tables.Table): class VRFTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn('ipam:vrf', args=[Accessor('pk')], verbose_name='Name') name = tables.LinkColumn('ipam:vrf', args=[Accessor('pk')], verbose_name='Name')
rd = tables.Column(verbose_name='RD') rd = tables.Column(verbose_name='RD')
description = tables.Column(orderable=False, verbose_name='Description') description = tables.Column(orderable=False, verbose_name='Description')
class Meta: class Meta(BaseTable.Meta):
model = VRF model = VRF
fields = ('pk', 'name', 'rd', 'description') fields = ('pk', 'name', 'rd', 'description')
empty_text = "No VRFs found."
attrs = {
'class': 'table table-hover',
}
# #
# RIRs # RIRs
# #
class RIRTable(tables.Table): class RIRTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
aggregate_count = tables.Column(verbose_name='Aggregates') aggregate_count = tables.Column(verbose_name='Aggregates')
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=RIR_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=RIR_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = RIR model = RIR
fields = ('pk', 'name', 'aggregate_count', 'slug', 'edit') fields = ('pk', 'name', 'aggregate_count', 'slug', 'edit')
empty_text = "No aggregates were found."
attrs = {
'class': 'table table-hover',
}
# #
# Aggregates # Aggregates
# #
class AggregateTable(tables.Table): class AggregateTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
prefix = tables.LinkColumn('ipam:aggregate', args=[Accessor('pk')], verbose_name='Aggregate') prefix = tables.LinkColumn('ipam:aggregate', args=[Accessor('pk')], verbose_name='Aggregate')
rir = tables.Column(verbose_name='RIR') rir = tables.Column(verbose_name='RIR')
@ -103,20 +95,16 @@ class AggregateTable(tables.Table):
date_added = tables.DateColumn(format="Y-m-d", verbose_name='Added') date_added = tables.DateColumn(format="Y-m-d", verbose_name='Added')
description = tables.Column(orderable=False, verbose_name='Description') description = tables.Column(orderable=False, verbose_name='Description')
class Meta: class Meta(BaseTable.Meta):
model = Aggregate model = Aggregate
fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description') fields = ('pk', 'prefix', 'rir', 'child_count', 'utilization', 'date_added', 'description')
empty_text = "No aggregates found."
attrs = {
'class': 'table table-hover',
}
# #
# Roles # Roles
# #
class RoleTable(tables.Table): class RoleTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.Column(verbose_name='Name') name = tables.Column(verbose_name='Name')
prefix_count = tables.Column(accessor=Accessor('count_prefixes'), orderable=False, verbose_name='Prefixes') prefix_count = tables.Column(accessor=Accessor('count_prefixes'), orderable=False, verbose_name='Prefixes')
@ -124,20 +112,16 @@ class RoleTable(tables.Table):
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=ROLE_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=ROLE_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = Role model = Role
fields = ('pk', 'name', 'prefix_count', 'vlan_count', 'slug', 'edit') fields = ('pk', 'name', 'prefix_count', 'vlan_count', 'slug', 'edit')
empty_text = "No roles were found."
attrs = {
'class': 'table table-hover',
}
# #
# Prefixes # Prefixes
# #
class PrefixTable(tables.Table): class PrefixTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status') status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
prefix = tables.TemplateColumn(PREFIX_LINK, verbose_name='Prefix') prefix = tables.TemplateColumn(PREFIX_LINK, verbose_name='Prefix')
@ -146,35 +130,27 @@ class PrefixTable(tables.Table):
role = tables.Column(verbose_name='Role') role = tables.Column(verbose_name='Role')
description = tables.Column(orderable=False, verbose_name='Description') description = tables.Column(orderable=False, verbose_name='Description')
class Meta: class Meta(BaseTable.Meta):
model = Prefix model = Prefix
fields = ('pk', 'prefix', 'status', 'vrf', 'site', 'role', 'description') fields = ('pk', 'prefix', 'status', 'vrf', 'site', 'role', 'description')
empty_text = "No prefixes found."
attrs = {
'class': 'table table-hover',
}
class PrefixBriefTable(tables.Table): class PrefixBriefTable(BaseTable):
prefix = tables.TemplateColumn(PREFIX_LINK_BRIEF, verbose_name='Prefix') prefix = tables.TemplateColumn(PREFIX_LINK_BRIEF, verbose_name='Prefix')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status') status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
role = tables.Column(verbose_name='Role') role = tables.Column(verbose_name='Role')
class Meta: class Meta(BaseTable.Meta):
model = Prefix model = Prefix
fields = ('prefix', 'status', 'site', 'role') fields = ('prefix', 'status', 'site', 'role')
empty_text = "No prefixes found."
attrs = {
'class': 'table table-hover',
}
# #
# IPAddresses # IPAddresses
# #
class IPAddressTable(tables.Table): class IPAddressTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
address = tables.LinkColumn('ipam:ipaddress', args=[Accessor('pk')], verbose_name='IP Address') address = tables.LinkColumn('ipam:ipaddress', args=[Accessor('pk')], verbose_name='IP Address')
vrf = tables.Column(orderable=False, default='Global', verbose_name='VRF') vrf = tables.Column(orderable=False, default='Global', verbose_name='VRF')
@ -183,16 +159,12 @@ class IPAddressTable(tables.Table):
interface = tables.Column(orderable=False, verbose_name='Interface') interface = tables.Column(orderable=False, verbose_name='Interface')
description = tables.Column(orderable=False, verbose_name='Description') description = tables.Column(orderable=False, verbose_name='Description')
class Meta: class Meta(BaseTable.Meta):
model = IPAddress model = IPAddress
fields = ('pk', 'address', 'vrf', 'device', 'interface', 'description') fields = ('pk', 'address', 'vrf', 'device', 'interface', 'description')
empty_text = "No IP addresses found."
attrs = {
'class': 'table table-hover',
}
class IPAddressBriefTable(tables.Table): class IPAddressBriefTable(BaseTable):
address = tables.LinkColumn('ipam:ipaddress', args=[Accessor('pk')], verbose_name='IP Address') address = tables.LinkColumn('ipam:ipaddress', args=[Accessor('pk')], verbose_name='IP Address')
device = tables.LinkColumn('dcim:device', args=[Accessor('interface.device.pk')], orderable=False, device = tables.LinkColumn('dcim:device', args=[Accessor('interface.device.pk')], orderable=False,
verbose_name='Device') verbose_name='Device')
@ -200,20 +172,16 @@ class IPAddressBriefTable(tables.Table):
nat_inside = tables.LinkColumn('ipam:ipaddress', args=[Accessor('nat_inside.pk')], orderable=False, nat_inside = tables.LinkColumn('ipam:ipaddress', args=[Accessor('nat_inside.pk')], orderable=False,
verbose_name='NAT (Inside)') verbose_name='NAT (Inside)')
class Meta: class Meta(BaseTable.Meta):
model = IPAddress model = IPAddress
fields = ('address', 'device', 'interface', 'nat_inside') fields = ('address', 'device', 'interface', 'nat_inside')
empty_text = "No IP addresses found."
attrs = {
'class': 'table table-hover',
}
# #
# VLANs # VLANs
# #
class VLANTable(tables.Table): class VLANTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
vid = tables.LinkColumn('ipam:vlan', args=[Accessor('pk')], verbose_name='ID') vid = tables.LinkColumn('ipam:vlan', args=[Accessor('pk')], verbose_name='ID')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site') site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
@ -221,10 +189,6 @@ class VLANTable(tables.Table):
status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status') status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
role = tables.Column(verbose_name='Role') role = tables.Column(verbose_name='Role')
class Meta: class Meta(BaseTable.Meta):
model = VLAN model = VLAN
fields = ('pk', 'vid', 'site', 'name', 'status', 'role') fields = ('pk', 'vid', 'site', 'name', 'status', 'role')
empty_text = "No VLANs found."
attrs = {
'class': 'table table-hover',
}

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from utilities.tables import ToggleColumn from utilities.tables import BaseTable, ToggleColumn
from .models import SecretRole, Secret from .models import SecretRole, Secret
@ -17,37 +17,29 @@ SECRETROLE_EDIT_LINK = """
# Secret roles # Secret roles
# #
class SecretRoleTable(tables.Table): class SecretRoleTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
name = tables.LinkColumn(verbose_name='Name') name = tables.LinkColumn(verbose_name='Name')
secret_count = tables.Column(verbose_name='Secrets') secret_count = tables.Column(verbose_name='Secrets')
slug = tables.Column(verbose_name='Slug') slug = tables.Column(verbose_name='Slug')
edit = tables.TemplateColumn(template_code=SECRETROLE_EDIT_LINK, verbose_name='') edit = tables.TemplateColumn(template_code=SECRETROLE_EDIT_LINK, verbose_name='')
class Meta: class Meta(BaseTable.Meta):
model = SecretRole model = SecretRole
fields = ('pk', 'name', 'secret_count', 'slug', 'edit') fields = ('pk', 'name', 'secret_count', 'slug', 'edit')
empty_text = "No secret roles were found."
attrs = {
'class': 'table table-hover',
}
# #
# Secrets # Secrets
# #
class SecretTable(tables.Table): class SecretTable(BaseTable):
pk = ToggleColumn() pk = ToggleColumn()
device = tables.LinkColumn('secrets:secret', args=[Accessor('pk')], verbose_name='Device') device = tables.LinkColumn('secrets:secret', args=[Accessor('pk')], verbose_name='Device')
role = tables.Column(verbose_name='Role') role = tables.Column(verbose_name='Role')
name = tables.Column(verbose_name='Name') name = tables.Column(verbose_name='Name')
last_modified = tables.DateTimeColumn(verbose_name='Last modified') last_modified = tables.DateTimeColumn(verbose_name='Last modified')
class Meta: class Meta(BaseTable.Meta):
model = Secret model = Secret
fields = ('pk', 'device', 'role', 'name', 'last_modified') fields = ('pk', 'device', 'role', 'name', 'last_modified')
empty_text = "No secrets found."
attrs = {
'class': 'table table-hover',
}

View File

@ -3,6 +3,21 @@ import django_tables2 as tables
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
class BaseTable(tables.Table):
def __init__(self, *args, **kwargs):
super(BaseTable, self).__init__(*args, **kwargs)
# Set default empty_text if none was provided
if self.empty_text is None:
self.empty_text = 'No {} found.'.format(self._meta.model._meta.verbose_name_plural)
class Meta:
attrs = {
'class': 'table table-hover',
}
class ToggleColumn(tables.CheckBoxColumn): class ToggleColumn(tables.CheckBoxColumn):
default = '' default = ''
visible = False visible = False