Split out NetBoxTable from BaseTable

This commit is contained in:
jeremystretch 2022-01-27 15:48:05 -05:00
parent 4a1b4e0485
commit 59d3f5c4ea
20 changed files with 218 additions and 254 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 netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from .models import * from .models import *
@ -47,8 +47,7 @@ class CommitRateColumn(tables.TemplateColumn):
# Providers # Providers
# #
class ProviderTable(BaseTable): class ProviderTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -61,7 +60,7 @@ class ProviderTable(BaseTable):
url_name='circuits:provider_list' url_name='circuits:provider_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Provider model = Provider
fields = ( fields = (
'pk', 'id', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count', 'pk', 'id', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count',
@ -74,8 +73,7 @@ class ProviderTable(BaseTable):
# Provider networks # Provider networks
# #
class ProviderNetworkTable(BaseTable): class ProviderNetworkTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -87,7 +85,7 @@ class ProviderNetworkTable(BaseTable):
url_name='circuits:providernetwork_list' url_name='circuits:providernetwork_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ProviderNetwork model = ProviderNetwork
fields = ( fields = (
'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags', 'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags',
@ -99,8 +97,7 @@ class ProviderNetworkTable(BaseTable):
# Circuit types # Circuit types
# #
class CircuitTypeTable(BaseTable): class CircuitTypeTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -111,7 +108,7 @@ class CircuitTypeTable(BaseTable):
verbose_name='Circuits' verbose_name='Circuits'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = CircuitType model = CircuitType
fields = ( fields = (
'pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', 'pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
@ -123,8 +120,7 @@ class CircuitTypeTable(BaseTable):
# Circuits # Circuits
# #
class CircuitTable(BaseTable): class CircuitTable(NetBoxTable):
pk = columns.ToggleColumn()
cid = tables.Column( cid = tables.Column(
linkify=True, linkify=True,
verbose_name='Circuit ID' verbose_name='Circuit ID'
@ -148,7 +144,7 @@ class CircuitTable(BaseTable):
url_name='circuits:circuit_list' url_name='circuits:circuit_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Circuit model = Circuit
fields = ( fields = (
'pk', 'id', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'install_date', 'pk', 'id', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'install_date',

View File

@ -1,8 +1,8 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from dcim.models import ConsolePort, Interface, PowerPort
from netbox.tables import BaseTable, columns from netbox.tables import BaseTable, columns
from dcim.models import ConsolePort, Interface, PowerPort
from .cables import * from .cables import *
from .devices import * from .devices import *
from .devicetypes import * from .devicetypes import *
@ -44,7 +44,6 @@ class ConsoleConnectionTable(BaseTable):
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
model = ConsolePort model = ConsolePort
fields = ('device', 'name', 'console_server', 'console_server_port', 'reachable') fields = ('device', 'name', 'console_server', 'console_server_port', 'reachable')
exclude = ('id', )
class PowerConnectionTable(BaseTable): class PowerConnectionTable(BaseTable):
@ -75,7 +74,6 @@ class PowerConnectionTable(BaseTable):
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
model = PowerPort model = PowerPort
fields = ('device', 'name', 'pdu', 'outlet', 'reachable') fields = ('device', 'name', 'pdu', 'outlet', 'reachable')
exclude = ('id', )
class InterfaceConnectionTable(BaseTable): class InterfaceConnectionTable(BaseTable):
@ -109,4 +107,3 @@ class InterfaceConnectionTable(BaseTable):
class Meta(BaseTable.Meta): class Meta(BaseTable.Meta):
model = Interface model = Interface
fields = ('device_a', 'interface_a', 'device_b', 'interface_b', 'reachable') fields = ('device_a', 'interface_a', 'device_b', 'interface_b', 'reachable')
exclude = ('id', )

View File

@ -2,7 +2,7 @@ import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from dcim.models import Cable from dcim.models import Cable
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from .template_code import CABLE_LENGTH, CABLE_TERMINATION_PARENT from .template_code import CABLE_LENGTH, CABLE_TERMINATION_PARENT
@ -15,8 +15,7 @@ __all__ = (
# Cables # Cables
# #
class CableTable(BaseTable): class CableTable(NetBoxTable):
pk = columns.ToggleColumn()
termination_a_parent = tables.TemplateColumn( termination_a_parent = tables.TemplateColumn(
template_code=CABLE_TERMINATION_PARENT, template_code=CABLE_TERMINATION_PARENT,
accessor=Accessor('termination_a'), accessor=Accessor('termination_a'),
@ -52,7 +51,7 @@ class CableTable(BaseTable):
url_name='dcim:cable_list' url_name='dcim:cable_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Cable model = Cable
fields = ( fields = (
'pk', 'id', 'label', 'termination_a_parent', 'termination_a', 'termination_b_parent', 'termination_b', 'pk', 'id', 'label', 'termination_a_parent', 'termination_a', 'termination_b_parent', 'termination_b',

View File

@ -5,7 +5,7 @@ from dcim.models import (
ConsolePort, ConsoleServerPort, Device, DeviceBay, DeviceRole, FrontPort, Interface, InventoryItem, ConsolePort, ConsoleServerPort, Device, DeviceBay, DeviceRole, FrontPort, Interface, InventoryItem,
InventoryItemRole, ModuleBay, Platform, PowerOutlet, PowerPort, RearPort, VirtualChassis, InventoryItemRole, ModuleBay, Platform, PowerOutlet, PowerPort, RearPort, VirtualChassis,
) )
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from .template_code import * from .template_code import *
@ -71,8 +71,7 @@ def get_interface_state_attribute(record):
# Device roles # Device roles
# #
class DeviceRoleTable(BaseTable): class DeviceRoleTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -92,7 +91,7 @@ class DeviceRoleTable(BaseTable):
url_name='dcim:devicerole_list' url_name='dcim:devicerole_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = DeviceRole model = DeviceRole
fields = ( fields = (
'pk', 'id', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'tags', 'pk', 'id', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'tags',
@ -105,8 +104,7 @@ class DeviceRoleTable(BaseTable):
# Platforms # Platforms
# #
class PlatformTable(BaseTable): class PlatformTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -124,7 +122,7 @@ class PlatformTable(BaseTable):
url_name='dcim:platform_list' url_name='dcim:platform_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Platform model = Platform
fields = ( fields = (
'pk', 'id', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'napalm_args', 'pk', 'id', 'name', 'manufacturer', 'device_count', 'vm_count', 'slug', 'napalm_driver', 'napalm_args',
@ -139,8 +137,7 @@ class PlatformTable(BaseTable):
# Devices # Devices
# #
class DeviceTable(BaseTable): class DeviceTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.TemplateColumn( name = tables.TemplateColumn(
order_by=('_name',), order_by=('_name',),
template_code=DEVICE_LINK template_code=DEVICE_LINK
@ -197,7 +194,7 @@ class DeviceTable(BaseTable):
url_name='dcim:device_list' url_name='dcim:device_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Device model = Device
fields = ( fields = (
'pk', 'id', 'name', 'status', 'tenant', 'device_role', 'manufacturer', 'device_type', 'platform', 'serial', 'pk', 'id', 'name', 'status', 'tenant', 'device_role', 'manufacturer', 'device_type', 'platform', 'serial',
@ -211,7 +208,7 @@ class DeviceTable(BaseTable):
) )
class DeviceImportTable(BaseTable): class DeviceImportTable(NetBoxTable):
name = tables.TemplateColumn( name = tables.TemplateColumn(
template_code=DEVICE_LINK template_code=DEVICE_LINK
) )
@ -230,7 +227,7 @@ class DeviceImportTable(BaseTable):
verbose_name='Type' verbose_name='Type'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Device model = Device
fields = ('id', 'name', 'status', 'tenant', 'site', 'rack', 'position', 'device_role', 'device_type') fields = ('id', 'name', 'status', 'tenant', 'site', 'rack', 'position', 'device_role', 'device_type')
empty_text = False empty_text = False
@ -240,8 +237,7 @@ class DeviceImportTable(BaseTable):
# Device components # Device components
# #
class DeviceComponentTable(BaseTable): class DeviceComponentTable(NetBoxTable):
pk = columns.ToggleColumn()
device = tables.Column( device = tables.Column(
linkify=True linkify=True
) )
@ -250,7 +246,7 @@ class DeviceComponentTable(BaseTable):
order_by=('_name',) order_by=('_name',)
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
order_by = ('device', 'name') order_by = ('device', 'name')
@ -267,7 +263,7 @@ class ModularDeviceComponentTable(DeviceComponentTable):
) )
class CableTerminationTable(BaseTable): class CableTerminationTable(NetBoxTable):
cable = tables.Column( cable = tables.Column(
linkify=True linkify=True
) )
@ -473,7 +469,7 @@ class DevicePowerOutletTable(PowerOutletTable):
} }
class BaseInterfaceTable(BaseTable): class BaseInterfaceTable(NetBoxTable):
enabled = columns.BooleanColumn() enabled = columns.BooleanColumn()
ip_addresses = tables.TemplateColumn( ip_addresses = tables.TemplateColumn(
template_code=INTERFACE_IPADDRESSES, template_code=INTERFACE_IPADDRESSES,
@ -776,7 +772,7 @@ class InventoryItemTable(DeviceComponentTable):
) )
cable = None # Override DeviceComponentTable cable = None # Override DeviceComponentTable
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = InventoryItem model = InventoryItem
fields = ( fields = (
'pk', 'id', 'name', 'device', 'component', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'pk', 'id', 'name', 'device', 'component', 'label', 'role', 'manufacturer', 'part_id', 'serial',
@ -796,7 +792,7 @@ class DeviceInventoryItemTable(InventoryItemTable):
) )
actions = columns.ActionsColumn() actions = columns.ActionsColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = InventoryItem model = InventoryItem
fields = ( fields = (
'pk', 'id', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'component', 'pk', 'id', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'component',
@ -807,8 +803,7 @@ class DeviceInventoryItemTable(InventoryItemTable):
) )
class InventoryItemRoleTable(BaseTable): class InventoryItemRoleTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -822,7 +817,7 @@ class InventoryItemRoleTable(BaseTable):
url_name='dcim:inventoryitemrole_list' url_name='dcim:inventoryitemrole_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = InventoryItemRole model = InventoryItemRole
fields = ( fields = (
'pk', 'id', 'name', 'inventoryitem_count', 'color', 'description', 'slug', 'tags', 'actions', 'pk', 'id', 'name', 'inventoryitem_count', 'color', 'description', 'slug', 'tags', 'actions',
@ -834,8 +829,7 @@ class InventoryItemRoleTable(BaseTable):
# Virtual chassis # Virtual chassis
# #
class VirtualChassisTable(BaseTable): class VirtualChassisTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -851,7 +845,7 @@ class VirtualChassisTable(BaseTable):
url_name='dcim:virtualchassis_list' url_name='dcim:virtualchassis_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VirtualChassis model = VirtualChassis
fields = ('pk', 'id', 'name', 'domain', 'master', 'member_count', 'tags', 'created', 'last_updated',) fields = ('pk', 'id', 'name', 'domain', 'master', 'member_count', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'domain', 'master', 'member_count') default_columns = ('pk', 'name', 'domain', 'master', 'member_count')

View File

@ -5,7 +5,7 @@ from dcim.models import (
ConsolePortTemplate, ConsoleServerPortTemplate, DeviceBayTemplate, DeviceType, FrontPortTemplate, InterfaceTemplate, ConsolePortTemplate, ConsoleServerPortTemplate, DeviceBayTemplate, DeviceType, FrontPortTemplate, InterfaceTemplate,
InventoryItemTemplate, Manufacturer, ModuleBayTemplate, PowerOutletTemplate, PowerPortTemplate, RearPortTemplate, InventoryItemTemplate, Manufacturer, ModuleBayTemplate, PowerOutletTemplate, PowerPortTemplate, RearPortTemplate,
) )
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from .template_code import MODULAR_COMPONENT_TEMPLATE_BUTTONS from .template_code import MODULAR_COMPONENT_TEMPLATE_BUTTONS
__all__ = ( __all__ = (
@ -28,8 +28,7 @@ __all__ = (
# Manufacturers # Manufacturers
# #
class ManufacturerTable(BaseTable): class ManufacturerTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -47,7 +46,7 @@ class ManufacturerTable(BaseTable):
url_name='dcim:manufacturer_list' url_name='dcim:manufacturer_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Manufacturer model = Manufacturer
fields = ( fields = (
'pk', 'id', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug', 'pk', 'id', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug',
@ -62,8 +61,7 @@ class ManufacturerTable(BaseTable):
# Device types # Device types
# #
class DeviceTypeTable(BaseTable): class DeviceTypeTable(NetBoxTable):
pk = columns.ToggleColumn()
model = tables.Column( model = tables.Column(
linkify=True, linkify=True,
verbose_name='Device Type' verbose_name='Device Type'
@ -81,7 +79,7 @@ class DeviceTypeTable(BaseTable):
url_name='dcim:devicetype_list' url_name='dcim:devicetype_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = DeviceType model = DeviceType
fields = ( fields = (
'pk', 'id', 'model', 'manufacturer', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'pk', 'id', 'model', 'manufacturer', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role',
@ -96,8 +94,7 @@ class DeviceTypeTable(BaseTable):
# Device type components # Device type components
# #
class ComponentTemplateTable(BaseTable): class ComponentTemplateTable(NetBoxTable):
pk = columns.ToggleColumn()
id = tables.Column( id = tables.Column(
verbose_name='ID' verbose_name='ID'
) )
@ -105,7 +102,7 @@ class ComponentTemplateTable(BaseTable):
order_by=('_name',) order_by=('_name',)
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
exclude = ('id', ) exclude = ('id', )

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from dcim.models import Module, ModuleType from dcim.models import Module, ModuleType
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
__all__ = ( __all__ = (
'ModuleTable', 'ModuleTable',
@ -9,8 +9,7 @@ __all__ = (
) )
class ModuleTypeTable(BaseTable): class ModuleTypeTable(NetBoxTable):
pk = columns.ToggleColumn()
model = tables.Column( model = tables.Column(
linkify=True, linkify=True,
verbose_name='Module Type' verbose_name='Module Type'
@ -25,7 +24,7 @@ class ModuleTypeTable(BaseTable):
url_name='dcim:moduletype_list' url_name='dcim:moduletype_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ModuleType model = ModuleType
fields = ( fields = (
'pk', 'id', 'model', 'manufacturer', 'part_number', 'comments', 'tags', 'pk', 'id', 'model', 'manufacturer', 'part_number', 'comments', 'tags',
@ -35,8 +34,7 @@ class ModuleTypeTable(BaseTable):
) )
class ModuleTable(BaseTable): class ModuleTable(NetBoxTable):
pk = columns.ToggleColumn()
device = tables.Column( device = tables.Column(
linkify=True linkify=True
) )
@ -51,7 +49,7 @@ class ModuleTable(BaseTable):
url_name='dcim:module_list' url_name='dcim:module_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Module model = Module
fields = ( fields = (
'pk', 'id', 'device', 'module_bay', 'module_type', 'serial', 'asset_tag', 'comments', 'tags', 'pk', 'id', 'device', 'module_bay', 'module_type', 'serial', 'asset_tag', 'comments', 'tags',

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from dcim.models import PowerFeed, PowerPanel from dcim.models import PowerFeed, PowerPanel
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from .devices import CableTerminationTable from .devices import CableTerminationTable
__all__ = ( __all__ = (
@ -14,8 +14,7 @@ __all__ = (
# Power panels # Power panels
# #
class PowerPanelTable(BaseTable): class PowerPanelTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -31,7 +30,7 @@ class PowerPanelTable(BaseTable):
url_name='dcim:powerpanel_list' url_name='dcim:powerpanel_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = PowerPanel model = PowerPanel
fields = ('pk', 'id', 'name', 'site', 'location', 'powerfeed_count', 'tags', 'created', 'last_updated',) fields = ('pk', 'id', 'name', 'site', 'location', 'powerfeed_count', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'site', 'location', 'powerfeed_count') default_columns = ('pk', 'name', 'site', 'location', 'powerfeed_count')
@ -44,7 +43,6 @@ class PowerPanelTable(BaseTable):
# We're not using PathEndpointTable for PowerFeed because power connections # We're not using PathEndpointTable for PowerFeed because power connections
# cannot traverse pass-through ports. # cannot traverse pass-through ports.
class PowerFeedTable(CableTerminationTable): class PowerFeedTable(CableTerminationTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -67,7 +65,7 @@ class PowerFeedTable(CableTerminationTable):
url_name='dcim:powerfeed_list' url_name='dcim:powerfeed_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = PowerFeed model = PowerFeed
fields = ( fields = (
'pk', 'id', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', 'pk', 'id', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase',

View File

@ -2,7 +2,7 @@ import django_tables2 as tables
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from dcim.models import Rack, RackReservation, RackRole from dcim.models import Rack, RackReservation, RackRole
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
__all__ = ( __all__ = (
@ -16,8 +16,7 @@ __all__ = (
# Rack roles # Rack roles
# #
class RackRoleTable(BaseTable): class RackRoleTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column(linkify=True) name = tables.Column(linkify=True)
rack_count = tables.Column(verbose_name='Racks') rack_count = tables.Column(verbose_name='Racks')
color = columns.ColorColumn() color = columns.ColorColumn()
@ -25,7 +24,7 @@ class RackRoleTable(BaseTable):
url_name='dcim:rackrole_list' url_name='dcim:rackrole_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = RackRole model = RackRole
fields = ( fields = (
'pk', 'id', 'name', 'rack_count', 'color', 'description', 'slug', 'tags', 'actions', 'created', 'pk', 'id', 'name', 'rack_count', 'color', 'description', 'slug', 'tags', 'actions', 'created',
@ -38,8 +37,7 @@ class RackRoleTable(BaseTable):
# Racks # Racks
# #
class RackTable(BaseTable): class RackTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
order_by=('_name',), order_by=('_name',),
linkify=True linkify=True
@ -83,7 +81,7 @@ class RackTable(BaseTable):
verbose_name='Outer Depth' verbose_name='Outer Depth'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Rack model = Rack
fields = ( fields = (
'pk', 'id', 'name', 'site', 'location', 'status', 'facility_id', 'tenant', 'role', 'serial', 'asset_tag', 'pk', 'id', 'name', 'site', 'location', 'status', 'facility_id', 'tenant', 'role', 'serial', 'asset_tag',
@ -100,8 +98,7 @@ class RackTable(BaseTable):
# Rack reservations # Rack reservations
# #
class RackReservationTable(BaseTable): class RackReservationTable(NetBoxTable):
pk = columns.ToggleColumn()
reservation = tables.Column( reservation = tables.Column(
accessor='pk', accessor='pk',
linkify=True linkify=True
@ -122,7 +119,7 @@ class RackReservationTable(BaseTable):
url_name='dcim:rackreservation_list' url_name='dcim:rackreservation_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = RackReservation model = RackReservation
fields = ( fields = (
'pk', 'id', 'reservation', 'site', 'rack', 'unit_list', 'user', 'created', 'tenant', 'description', 'tags', 'pk', 'id', 'reservation', 'site', 'rack', 'unit_list', 'user', 'created', 'tenant', 'description', 'tags',

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from dcim.models import Location, Region, Site, SiteGroup from dcim.models import Location, Region, Site, SiteGroup
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from .template_code import LOCATION_BUTTONS from .template_code import LOCATION_BUTTONS
@ -17,8 +17,7 @@ __all__ = (
# Regions # Regions
# #
class RegionTable(BaseTable): class RegionTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -31,7 +30,7 @@ class RegionTable(BaseTable):
url_name='dcim:region_list' url_name='dcim:region_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Region model = Region
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'created', 'last_updated', 'actions', 'pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'created', 'last_updated', 'actions',
@ -43,8 +42,7 @@ class RegionTable(BaseTable):
# Site groups # Site groups
# #
class SiteGroupTable(BaseTable): class SiteGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -57,7 +55,7 @@ class SiteGroupTable(BaseTable):
url_name='dcim:sitegroup_list' url_name='dcim:sitegroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = SiteGroup model = SiteGroup
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'created', 'last_updated', 'actions', 'pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'created', 'last_updated', 'actions',
@ -69,8 +67,7 @@ class SiteGroupTable(BaseTable):
# Sites # Sites
# #
class SiteTable(BaseTable): class SiteTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -93,7 +90,7 @@ class SiteTable(BaseTable):
url_name='dcim:site_list' url_name='dcim:site_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Site model = Site
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'time_zone', 'pk', 'id', 'name', 'slug', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'time_zone',
@ -107,8 +104,7 @@ class SiteTable(BaseTable):
# Locations # Locations
# #
class LocationTable(BaseTable): class LocationTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -133,7 +129,7 @@ class LocationTable(BaseTable):
extra_buttons=LOCATION_BUTTONS extra_buttons=LOCATION_BUTTONS
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Location model = Location
fields = ( fields = (
'pk', 'id', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'tags', 'pk', 'id', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'tags',

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from django.conf import settings from django.conf import settings
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from .models import * from .models import *
__all__ = ( __all__ = (
@ -43,15 +43,14 @@ OBJECTCHANGE_REQUEST_ID = """
# Custom fields # Custom fields
# #
class CustomFieldTable(BaseTable): class CustomFieldTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
content_types = columns.ContentTypesColumn() content_types = columns.ContentTypesColumn()
required = columns.BooleanColumn() required = columns.BooleanColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = CustomField model = CustomField
fields = ( fields = (
'pk', 'id', 'name', 'content_types', 'label', 'type', 'required', 'weight', 'default', 'pk', 'id', 'name', 'content_types', 'label', 'type', 'required', 'weight', 'default',
@ -64,8 +63,7 @@ class CustomFieldTable(BaseTable):
# Custom links # Custom links
# #
class CustomLinkTable(BaseTable): class CustomLinkTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -73,7 +71,7 @@ class CustomLinkTable(BaseTable):
enabled = columns.BooleanColumn() enabled = columns.BooleanColumn()
new_window = columns.BooleanColumn() new_window = columns.BooleanColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = CustomLink model = CustomLink
fields = ( fields = (
'pk', 'id', 'name', 'content_type', 'enabled', 'link_text', 'link_url', 'weight', 'group_name', 'pk', 'id', 'name', 'content_type', 'enabled', 'link_text', 'link_url', 'weight', 'group_name',
@ -86,15 +84,14 @@ class CustomLinkTable(BaseTable):
# Export templates # Export templates
# #
class ExportTemplateTable(BaseTable): class ExportTemplateTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
content_type = columns.ContentTypeColumn() content_type = columns.ContentTypeColumn()
as_attachment = columns.BooleanColumn() as_attachment = columns.BooleanColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ExportTemplate model = ExportTemplate
fields = ( fields = (
'pk', 'id', 'name', 'content_type', 'description', 'mime_type', 'file_extension', 'as_attachment', 'pk', 'id', 'name', 'content_type', 'description', 'mime_type', 'file_extension', 'as_attachment',
@ -109,8 +106,7 @@ class ExportTemplateTable(BaseTable):
# Webhooks # Webhooks
# #
class WebhookTable(BaseTable): class WebhookTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -129,7 +125,7 @@ class WebhookTable(BaseTable):
verbose_name='SSL Validation' verbose_name='SSL Validation'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Webhook model = Webhook
fields = ( fields = (
'pk', 'id', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'http_method', 'pk', 'id', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'http_method',
@ -145,20 +141,19 @@ class WebhookTable(BaseTable):
# Tags # Tags
# #
class TagTable(BaseTable): class TagTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
color = columns.ColorColumn() color = columns.ColorColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Tag model = Tag
fields = ('pk', 'id', 'name', 'items', 'slug', 'color', 'description', 'created', 'last_updated', 'actions') fields = ('pk', 'id', 'name', 'items', 'slug', 'color', 'description', 'created', 'last_updated', 'actions')
default_columns = ('pk', 'name', 'items', 'slug', 'color', 'description') default_columns = ('pk', 'name', 'items', 'slug', 'color', 'description')
class TaggedItemTable(BaseTable): class TaggedItemTable(NetBoxTable):
id = tables.Column( id = tables.Column(
verbose_name='ID', verbose_name='ID',
linkify=lambda record: record.content_object.get_absolute_url(), linkify=lambda record: record.content_object.get_absolute_url(),
@ -173,13 +168,12 @@ class TaggedItemTable(BaseTable):
verbose_name='Object' verbose_name='Object'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = TaggedItem model = TaggedItem
fields = ('id', 'content_type', 'content_object') fields = ('id', 'content_type', 'content_object')
class ConfigContextTable(BaseTable): class ConfigContextTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -187,7 +181,7 @@ class ConfigContextTable(BaseTable):
verbose_name='Active' verbose_name='Active'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ConfigContext model = ConfigContext
fields = ( fields = (
'pk', 'id', 'name', 'weight', 'is_active', 'description', 'regions', 'sites', 'roles', 'pk', 'id', 'name', 'weight', 'is_active', 'description', 'regions', 'sites', 'roles',
@ -197,7 +191,7 @@ class ConfigContextTable(BaseTable):
default_columns = ('pk', 'name', 'weight', 'is_active', 'description') default_columns = ('pk', 'name', 'weight', 'is_active', 'description')
class ObjectChangeTable(BaseTable): class ObjectChangeTable(NetBoxTable):
time = tables.DateTimeColumn( time = tables.DateTimeColumn(
linkify=True, linkify=True,
format=settings.SHORT_DATETIME_FORMAT format=settings.SHORT_DATETIME_FORMAT
@ -216,12 +210,12 @@ class ObjectChangeTable(BaseTable):
) )
actions = columns.ActionsColumn(sequence=()) actions = columns.ActionsColumn(sequence=())
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ObjectChange model = ObjectChange
fields = ('id', 'time', 'user_name', 'action', 'changed_object_type', 'object_repr', 'request_id') fields = ('id', 'time', 'user_name', 'action', 'changed_object_type', 'object_repr', 'request_id')
class ObjectJournalTable(BaseTable): class ObjectJournalTable(NetBoxTable):
""" """
Used for displaying a set of JournalEntries within the context of a single object. Used for displaying a set of JournalEntries within the context of a single object.
""" """
@ -234,13 +228,12 @@ class ObjectJournalTable(BaseTable):
template_code='{% load helpers %}{{ value|render_markdown|truncatewords_html:50 }}' template_code='{% load helpers %}{{ value|render_markdown|truncatewords_html:50 }}'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = JournalEntry model = JournalEntry
fields = ('id', 'created', 'created_by', 'kind', 'comments', 'actions') fields = ('id', 'created', 'created_by', 'kind', 'comments', 'actions')
class JournalEntryTable(ObjectJournalTable): class JournalEntryTable(ObjectJournalTable):
pk = columns.ToggleColumn()
assigned_object_type = columns.ContentTypeColumn( assigned_object_type = columns.ContentTypeColumn(
verbose_name='Object type' verbose_name='Object type'
) )
@ -251,7 +244,7 @@ class JournalEntryTable(ObjectJournalTable):
) )
comments = columns.MarkdownColumn() comments = columns.MarkdownColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = JournalEntry model = JournalEntry
fields = ( fields = (
'pk', 'id', 'created', 'created_by', 'assigned_object_type', 'assigned_object', 'kind', 'pk', 'id', 'created', 'created_by', 'assigned_object_type', 'assigned_object', 'kind',

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from ipam.models import * from ipam.models import *
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
__all__ = ( __all__ = (
'FHRPGroupTable', 'FHRPGroupTable',
@ -16,8 +16,7 @@ IPADDRESSES = """
""" """
class FHRPGroupTable(BaseTable): class FHRPGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
group_id = tables.Column( group_id = tables.Column(
linkify=True linkify=True
) )
@ -34,7 +33,7 @@ class FHRPGroupTable(BaseTable):
url_name='ipam:fhrpgroup_list' url_name='ipam:fhrpgroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = FHRPGroup model = FHRPGroup
fields = ( fields = (
'pk', 'group_id', 'protocol', 'auth_type', 'auth_key', 'description', 'ip_addresses', 'interface_count', 'pk', 'group_id', 'protocol', 'auth_type', 'auth_key', 'description', 'ip_addresses', 'interface_count',
@ -43,8 +42,7 @@ class FHRPGroupTable(BaseTable):
default_columns = ('pk', 'group_id', 'protocol', 'auth_type', 'description', 'ip_addresses', 'interface_count') default_columns = ('pk', 'group_id', 'protocol', 'auth_type', 'description', 'ip_addresses', 'interface_count')
class FHRPGroupAssignmentTable(BaseTable): class FHRPGroupAssignmentTable(NetBoxTable):
pk = columns.ToggleColumn()
interface_parent = tables.Column( interface_parent = tables.Column(
accessor=tables.A('interface.parent_object'), accessor=tables.A('interface.parent_object'),
linkify=True, linkify=True,
@ -62,7 +60,7 @@ class FHRPGroupAssignmentTable(BaseTable):
sequence=('edit', 'delete') sequence=('edit', 'delete')
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = FHRPGroupAssignment model = FHRPGroupAssignment
fields = ('pk', 'group', 'interface_parent', 'interface', 'priority') fields = ('pk', 'group', 'interface_parent', 'interface', 'priority')
exclude = ('id',) exclude = ('id',)

View File

@ -3,7 +3,7 @@ from django.utils.safestring import mark_safe
from django_tables2.utils import Accessor from django_tables2.utils import Accessor
from ipam.models import * from ipam.models import *
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
__all__ = ( __all__ = (
@ -70,8 +70,7 @@ VRF_LINK = """
# RIRs # RIRs
# #
class RIRTable(BaseTable): class RIRTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -87,7 +86,7 @@ class RIRTable(BaseTable):
url_name='ipam:rir_list' url_name='ipam:rir_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = RIR model = RIR
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'tags', 'created', 'pk', 'id', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'tags', 'created',
@ -100,8 +99,7 @@ class RIRTable(BaseTable):
# ASNs # ASNs
# #
class ASNTable(BaseTable): class ASNTable(NetBoxTable):
pk = columns.ToggleColumn()
asn = tables.Column( asn = tables.Column(
accessor=tables.A('asn_asdot'), accessor=tables.A('asn_asdot'),
linkify=True linkify=True
@ -113,7 +111,7 @@ class ASNTable(BaseTable):
verbose_name='Sites' verbose_name='Sites'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ASN model = ASN
fields = ('pk', 'asn', 'rir', 'site_count', 'tenant', 'description', 'created', 'last_updated', 'actions') fields = ('pk', 'asn', 'rir', 'site_count', 'tenant', 'description', 'created', 'last_updated', 'actions')
default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant') default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant')
@ -123,8 +121,7 @@ class ASNTable(BaseTable):
# Aggregates # Aggregates
# #
class AggregateTable(BaseTable): class AggregateTable(NetBoxTable):
pk = columns.ToggleColumn()
prefix = tables.Column( prefix = tables.Column(
linkify=True, linkify=True,
verbose_name='Aggregate' verbose_name='Aggregate'
@ -145,7 +142,7 @@ class AggregateTable(BaseTable):
url_name='ipam:aggregate_list' url_name='ipam:aggregate_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Aggregate model = Aggregate
fields = ( fields = (
'pk', 'id', 'prefix', 'rir', 'tenant', 'child_count', 'utilization', 'date_added', 'description', 'tags', 'pk', 'id', 'prefix', 'rir', 'tenant', 'child_count', 'utilization', 'date_added', 'description', 'tags',
@ -158,8 +155,7 @@ class AggregateTable(BaseTable):
# Roles # Roles
# #
class RoleTable(BaseTable): class RoleTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -177,7 +173,7 @@ class RoleTable(BaseTable):
url_name='ipam:role_list' url_name='ipam:role_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Role model = Role
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'tags', 'created', 'pk', 'id', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'tags', 'created',
@ -205,8 +201,7 @@ class PrefixUtilizationColumn(columns.UtilizationColumn):
""" """
class PrefixTable(BaseTable): class PrefixTable(NetBoxTable):
pk = columns.ToggleColumn()
prefix = tables.TemplateColumn( prefix = tables.TemplateColumn(
template_code=PREFIX_LINK, template_code=PREFIX_LINK,
attrs={'td': {'class': 'text-nowrap'}} attrs={'td': {'class': 'text-nowrap'}}
@ -266,7 +261,7 @@ class PrefixTable(BaseTable):
url_name='ipam:prefix_list' url_name='ipam:prefix_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Prefix model = Prefix
fields = ( fields = (
'pk', 'id', 'prefix', 'prefix_flat', 'status', 'children', 'vrf', 'utilization', 'tenant', 'site', 'pk', 'id', 'prefix', 'prefix_flat', 'status', 'children', 'vrf', 'utilization', 'tenant', 'site',
@ -283,8 +278,7 @@ class PrefixTable(BaseTable):
# #
# IP ranges # IP ranges
# #
class IPRangeTable(BaseTable): class IPRangeTable(NetBoxTable):
pk = columns.ToggleColumn()
start_address = tables.Column( start_address = tables.Column(
linkify=True linkify=True
) )
@ -307,7 +301,7 @@ class IPRangeTable(BaseTable):
url_name='ipam:iprange_list' url_name='ipam:iprange_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = IPRange model = IPRange
fields = ( fields = (
'pk', 'id', 'start_address', 'end_address', 'size', 'vrf', 'status', 'role', 'tenant', 'description', 'pk', 'id', 'start_address', 'end_address', 'size', 'vrf', 'status', 'role', 'tenant', 'description',
@ -325,8 +319,7 @@ class IPRangeTable(BaseTable):
# IPAddresses # IPAddresses
# #
class IPAddressTable(BaseTable): class IPAddressTable(NetBoxTable):
pk = columns.ToggleColumn()
address = tables.TemplateColumn( address = tables.TemplateColumn(
template_code=IPADDRESS_LINK, template_code=IPADDRESS_LINK,
verbose_name='IP Address' verbose_name='IP Address'
@ -365,7 +358,7 @@ class IPAddressTable(BaseTable):
url_name='ipam:ipaddress_list' url_name='ipam:ipaddress_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = IPAddress model = IPAddress
fields = ( fields = (
'pk', 'id', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'assigned', 'dns_name', 'description', 'pk', 'id', 'address', 'vrf', 'status', 'role', 'tenant', 'nat_inside', 'assigned', 'dns_name', 'description',
@ -379,7 +372,7 @@ class IPAddressTable(BaseTable):
} }
class IPAddressAssignTable(BaseTable): class IPAddressAssignTable(NetBoxTable):
address = tables.TemplateColumn( address = tables.TemplateColumn(
template_code=IPADDRESS_ASSIGN_LINK, template_code=IPADDRESS_ASSIGN_LINK,
verbose_name='IP Address' verbose_name='IP Address'
@ -389,14 +382,14 @@ class IPAddressAssignTable(BaseTable):
orderable=False orderable=False
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = IPAddress model = IPAddress
fields = ('address', 'dns_name', 'vrf', 'status', 'role', 'tenant', 'assigned_object', 'description') fields = ('address', 'dns_name', 'vrf', 'status', 'role', 'tenant', 'assigned_object', 'description')
exclude = ('id', ) exclude = ('id', )
orderable = False orderable = False
class AssignedIPAddressesTable(BaseTable): class AssignedIPAddressesTable(NetBoxTable):
""" """
List IP addresses assigned to an object. List IP addresses assigned to an object.
""" """
@ -411,7 +404,7 @@ class AssignedIPAddressesTable(BaseTable):
status = columns.ChoiceFieldColumn() status = columns.ChoiceFieldColumn()
tenant = TenantColumn() tenant = TenantColumn()
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = IPAddress model = IPAddress
fields = ('address', 'vrf', 'status', 'role', 'tenant', 'description') fields = ('address', 'vrf', 'status', 'role', 'tenant', 'description')
exclude = ('id', ) exclude = ('id', )

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from ipam.models import * from ipam.models import *
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
__all__ = ( __all__ = (
'ServiceTable', 'ServiceTable',
@ -9,8 +9,7 @@ __all__ = (
) )
class ServiceTemplateTable(BaseTable): class ServiceTemplateTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -21,14 +20,13 @@ class ServiceTemplateTable(BaseTable):
url_name='ipam:servicetemplate_list' url_name='ipam:servicetemplate_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ServiceTemplate model = ServiceTemplate
fields = ('pk', 'id', 'name', 'protocol', 'ports', 'description', 'tags') fields = ('pk', 'id', 'name', 'protocol', 'ports', 'description', 'tags')
default_columns = ('pk', 'name', 'protocol', 'ports', 'description') default_columns = ('pk', 'name', 'protocol', 'ports', 'description')
class ServiceTable(BaseTable): class ServiceTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -43,7 +41,7 @@ class ServiceTable(BaseTable):
url_name='ipam:service_list' url_name='ipam:service_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Service model = Service
fields = ( fields = (
'pk', 'id', 'name', 'parent', 'protocol', 'ports', 'ipaddresses', 'description', 'tags', 'created', 'pk', 'id', 'name', 'parent', 'protocol', 'ports', 'ipaddresses', 'description', 'tags', 'created',

View File

@ -4,7 +4,7 @@ from django_tables2.utils import Accessor
from dcim.models import Interface from dcim.models import Interface
from ipam.models import * from ipam.models import *
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from virtualization.models import VMInterface from virtualization.models import VMInterface
@ -58,8 +58,7 @@ VLAN_MEMBER_TAGGED = """
# VLAN groups # VLAN groups
# #
class VLANGroupTable(BaseTable): class VLANGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column(linkify=True) name = tables.Column(linkify=True)
scope_type = columns.ContentTypeColumn() scope_type = columns.ContentTypeColumn()
scope = tables.Column( scope = tables.Column(
@ -78,7 +77,7 @@ class VLANGroupTable(BaseTable):
extra_buttons=VLANGROUP_BUTTONS extra_buttons=VLANGROUP_BUTTONS
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VLANGroup model = VLANGroup
fields = ( fields = (
'pk', 'id', 'name', 'scope_type', 'scope', 'min_vid', 'max_vid', 'vlan_count', 'slug', 'description', 'pk', 'id', 'name', 'scope_type', 'scope', 'min_vid', 'max_vid', 'vlan_count', 'slug', 'description',
@ -91,8 +90,7 @@ class VLANGroupTable(BaseTable):
# VLANs # VLANs
# #
class VLANTable(BaseTable): class VLANTable(NetBoxTable):
pk = columns.ToggleColumn()
vid = tables.TemplateColumn( vid = tables.TemplateColumn(
template_code=VLAN_LINK, template_code=VLAN_LINK,
verbose_name='VID' verbose_name='VID'
@ -122,7 +120,7 @@ class VLANTable(BaseTable):
url_name='ipam:vlan_list' url_name='ipam:vlan_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VLAN model = VLAN
fields = ( fields = (
'pk', 'id', 'vid', 'name', 'site', 'group', 'prefixes', 'tenant', 'status', 'role', 'description', 'tags', 'pk', 'id', 'vid', 'name', 'site', 'group', 'prefixes', 'tenant', 'status', 'role', 'description', 'tags',
@ -134,7 +132,7 @@ class VLANTable(BaseTable):
} }
class VLANMembersTable(BaseTable): class VLANMembersTable(NetBoxTable):
""" """
Base table for Interface and VMInterface assignments Base table for Interface and VMInterface assignments
""" """
@ -156,7 +154,7 @@ class VLANDevicesTable(VLANMembersTable):
sequence=('edit',) sequence=('edit',)
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Interface model = Interface
fields = ('device', 'name', 'tagged', 'actions') fields = ('device', 'name', 'tagged', 'actions')
exclude = ('id', ) exclude = ('id', )
@ -170,13 +168,13 @@ class VLANVirtualMachinesTable(VLANMembersTable):
sequence=('edit',) sequence=('edit',)
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VMInterface model = VMInterface
fields = ('virtual_machine', 'name', 'tagged', 'actions') fields = ('virtual_machine', 'name', 'tagged', 'actions')
exclude = ('id', ) exclude = ('id', )
class InterfaceVLANTable(BaseTable): class InterfaceVLANTable(NetBoxTable):
""" """
List VLANs assigned to a specific Interface. List VLANs assigned to a specific Interface.
""" """
@ -198,7 +196,7 @@ class InterfaceVLANTable(BaseTable):
linkify=True linkify=True
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VLAN model = VLAN
fields = ('vid', 'tagged', 'site', 'group', 'name', 'tenant', 'status', 'role', 'description') fields = ('vid', 'tagged', 'site', 'group', 'name', 'tenant', 'status', 'role', 'description')
exclude = ('id', ) exclude = ('id', )

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from ipam.models import * from ipam.models import *
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
__all__ = ( __all__ = (
@ -20,8 +20,7 @@ VRF_TARGETS = """
# VRFs # VRFs
# #
class VRFTable(BaseTable): class VRFTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -44,7 +43,7 @@ class VRFTable(BaseTable):
url_name='ipam:vrf_list' url_name='ipam:vrf_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VRF model = VRF
fields = ( fields = (
'pk', 'id', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'import_targets', 'export_targets', 'pk', 'id', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'import_targets', 'export_targets',
@ -57,8 +56,7 @@ class VRFTable(BaseTable):
# Route targets # Route targets
# #
class RouteTargetTable(BaseTable): class RouteTargetTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -67,7 +65,7 @@ class RouteTargetTable(BaseTable):
url_name='ipam:vrf_list' url_name='ipam:vrf_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = RouteTarget model = RouteTarget
fields = ('pk', 'id', 'name', 'tenant', 'description', 'tags', 'created', 'last_updated',) fields = ('pk', 'id', 'name', 'tenant', 'description', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'tenant', 'description') default_columns = ('pk', 'name', 'tenant', 'description')

View File

@ -11,49 +11,37 @@ from netbox.tables import columns
__all__ = ( __all__ = (
'BaseTable', 'BaseTable',
'NetBoxTable',
) )
class BaseTable(tables.Table): class BaseTable(tables.Table):
""" """
Default table for object lists Base table class for NetBox objects. Adds support for:
* User configuration (column preferences)
* Automatic prefetching of related objects
* BS5 styling
:param user: Personalize table display for the given user (optional). Has no effect if AnonymousUser is passed. :param user: Personalize table display for the given user (optional). Has no effect if AnonymousUser is passed.
""" """
id = tables.Column( exempt_columns = ()
linkify=True,
verbose_name='ID'
)
actions = columns.ActionsColumn()
class Meta: class Meta:
attrs = { attrs = {
'class': 'table table-hover object-list', 'class': 'table table-hover object-list',
} }
def __init__(self, *args, user=None, extra_columns=None, **kwargs): def __init__(self, *args, user=None, **kwargs):
if extra_columns is None:
extra_columns = []
# Add custom field & custom link columns super().__init__(*args, **kwargs)
content_type = ContentType.objects.get_for_model(self._meta.model)
custom_fields = CustomField.objects.filter(content_types=content_type)
extra_columns.extend([
(f'cf_{cf.name}', columns.CustomFieldColumn(cf)) for cf in custom_fields
])
custom_links = CustomLink.objects.filter(content_type=content_type, enabled=True)
extra_columns.extend([
(f'cl_{cl.name}', columns.CustomLinkColumn(cl)) for cl in custom_links
])
super().__init__(*args, extra_columns=extra_columns, **kwargs)
# Set default empty_text if none was provided # Set default empty_text if none was provided
if self.empty_text is None: if self.empty_text is None:
self.empty_text = f"No {self._meta.model._meta.verbose_name_plural} found" self.empty_text = f"No {self._meta.model._meta.verbose_name_plural} found"
# Hide non-default columns (except for actions) # Hide non-default columns
default_columns = [*getattr(self.Meta, 'default_columns', self.Meta.fields), 'actions'] default_columns = [*getattr(self.Meta, 'default_columns', self.Meta.fields), *self.exempt_columns]
for column in self.columns: for column in self.columns:
if column.name not in default_columns: if column.name not in default_columns:
self.columns.hide(column.name) self.columns.hide(column.name)
@ -65,7 +53,7 @@ class BaseTable(tables.Table):
# Show only persistent or selected columns # Show only persistent or selected columns
for name, column in self.columns.items(): for name, column in self.columns.items():
if name in ['pk', 'actions', *selected_columns]: if name in [*self.exempt_columns, *selected_columns]:
self.columns.show(name) self.columns.show(name)
else: else:
self.columns.hide(name) self.columns.hide(name)
@ -116,7 +104,7 @@ class BaseTable(tables.Table):
def _get_columns(self, visible=True): def _get_columns(self, visible=True):
columns = [] columns = []
for name, column in self.columns.items(): for name, column in self.columns.items():
if column.visible == visible and name not in ['pk', 'actions']: if column.visible == visible and name not in self.exempt_columns:
columns.append((name, column.verbose_name)) columns.append((name, column.verbose_name))
return columns return columns
@ -137,3 +125,44 @@ class BaseTable(tables.Table):
if not hasattr(self, '_objects_count'): if not hasattr(self, '_objects_count'):
self._objects_count = sum(1 for obj in self.data if hasattr(obj, 'pk')) self._objects_count = sum(1 for obj in self.data if hasattr(obj, 'pk'))
return self._objects_count return self._objects_count
class NetBoxTable(BaseTable):
"""
Table class for most NetBox objects. Adds support for custom field & custom link columns. Includes
default columns for:
* PK (row selection)
* ID
* Actions
"""
pk = columns.ToggleColumn(
visible=False
)
id = tables.Column(
linkify=True,
verbose_name='ID'
)
actions = columns.ActionsColumn()
exempt_columns = ('pk', 'actions')
class Meta(BaseTable.Meta):
pass
def __init__(self, *args, extra_columns=None, **kwargs):
if extra_columns is None:
extra_columns = []
# Add custom field & custom link columns
content_type = ContentType.objects.get_for_model(self._meta.model)
custom_fields = CustomField.objects.filter(content_types=content_type)
extra_columns.extend([
(f'cf_{cf.name}', columns.CustomFieldColumn(cf)) for cf in custom_fields
])
custom_links = CustomLink.objects.filter(content_type=content_type, enabled=True)
extra_columns.extend([
(f'cl_{cl.name}', columns.CustomLinkColumn(cl)) for cl in custom_links
])
super().__init__(*args, extra_columns=extra_columns, **kwargs)

View File

@ -2,14 +2,14 @@ from django.template import Context, Template
from django.test import TestCase from django.test import TestCase
from dcim.models import Site from dcim.models import Site
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from utilities.testing import create_tags from utilities.testing import create_tags
class TagColumnTable(BaseTable): class TagColumnTable(NetBoxTable):
tags = columns.TagColumn(url_name='dcim:site_list') tags = columns.TagColumn(url_name='dcim:site_list')
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Site model = Site
fields = ('pk', 'name', 'tags',) fields = ('pk', 'name', 'tags',)
default_columns = fields default_columns = fields

View File

@ -1,6 +1,6 @@
import django_tables2 as tables import django_tables2 as tables
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from utilities.tables import linkify_phone from utilities.tables import linkify_phone
from .models import * from .models import *
@ -44,8 +44,7 @@ class TenantColumn(tables.TemplateColumn):
# Tenants # Tenants
# #
class TenantGroupTable(BaseTable): class TenantGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -58,7 +57,7 @@ class TenantGroupTable(BaseTable):
url_name='tenancy:tenantgroup_list' url_name='tenancy:tenantgroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = TenantGroup model = TenantGroup
fields = ( fields = (
'pk', 'id', 'name', 'tenant_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', 'pk', 'id', 'name', 'tenant_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
@ -66,8 +65,7 @@ class TenantGroupTable(BaseTable):
default_columns = ('pk', 'name', 'tenant_count', 'description') default_columns = ('pk', 'name', 'tenant_count', 'description')
class TenantTable(BaseTable): class TenantTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -79,7 +77,7 @@ class TenantTable(BaseTable):
url_name='tenancy:tenant_list' url_name='tenancy:tenant_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Tenant model = Tenant
fields = ('pk', 'id', 'name', 'slug', 'group', 'description', 'comments', 'tags', 'created', 'last_updated',) fields = ('pk', 'id', 'name', 'slug', 'group', 'description', 'comments', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'group', 'description') default_columns = ('pk', 'name', 'group', 'description')
@ -89,8 +87,7 @@ class TenantTable(BaseTable):
# Contacts # Contacts
# #
class ContactGroupTable(BaseTable): class ContactGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -103,7 +100,7 @@ class ContactGroupTable(BaseTable):
url_name='tenancy:contactgroup_list' url_name='tenancy:contactgroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ContactGroup model = ContactGroup
fields = ( fields = (
'pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', 'pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
@ -111,20 +108,18 @@ class ContactGroupTable(BaseTable):
default_columns = ('pk', 'name', 'contact_count', 'description') default_columns = ('pk', 'name', 'contact_count', 'description')
class ContactRoleTable(BaseTable): class ContactRoleTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ContactRole model = ContactRole
fields = ('pk', 'name', 'description', 'slug', 'created', 'last_updated', 'actions') fields = ('pk', 'name', 'description', 'slug', 'created', 'last_updated', 'actions')
default_columns = ('pk', 'name', 'description') default_columns = ('pk', 'name', 'description')
class ContactTable(BaseTable): class ContactTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -142,7 +137,7 @@ class ContactTable(BaseTable):
url_name='tenancy:tenant_list' url_name='tenancy:tenant_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Contact model = Contact
fields = ( fields = (
'pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'comments', 'assignment_count', 'tags', 'pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'comments', 'assignment_count', 'tags',
@ -151,8 +146,7 @@ class ContactTable(BaseTable):
default_columns = ('pk', 'name', 'group', 'assignment_count', 'title', 'phone', 'email') default_columns = ('pk', 'name', 'group', 'assignment_count', 'title', 'phone', 'email')
class ContactAssignmentTable(BaseTable): class ContactAssignmentTable(NetBoxTable):
pk = columns.ToggleColumn()
content_type = columns.ContentTypeColumn( content_type = columns.ContentTypeColumn(
verbose_name='Object Type' verbose_name='Object Type'
) )
@ -170,7 +164,7 @@ class ContactAssignmentTable(BaseTable):
sequence=('edit', 'delete') sequence=('edit', 'delete')
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ContactAssignment model = ContactAssignment
fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions') fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions')
default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority') default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority')

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from dcim.tables.devices import BaseInterfaceTable from dcim.tables.devices import BaseInterfaceTable
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn from tenancy.tables import TenantColumn
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
@ -27,8 +27,7 @@ VMINTERFACE_BUTTONS = """
# Cluster types # Cluster types
# #
class ClusterTypeTable(BaseTable): class ClusterTypeTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -39,7 +38,7 @@ class ClusterTypeTable(BaseTable):
url_name='virtualization:clustertype_list' url_name='virtualization:clustertype_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ClusterType model = ClusterType
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'created', 'last_updated', 'tags', 'actions', 'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'created', 'last_updated', 'tags', 'actions',
@ -51,8 +50,7 @@ class ClusterTypeTable(BaseTable):
# Cluster groups # Cluster groups
# #
class ClusterGroupTable(BaseTable): class ClusterGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -63,7 +61,7 @@ class ClusterGroupTable(BaseTable):
url_name='virtualization:clustergroup_list' url_name='virtualization:clustergroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = ClusterGroup model = ClusterGroup
fields = ( fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'created', 'last_updated', 'actions', 'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'created', 'last_updated', 'actions',
@ -75,8 +73,7 @@ class ClusterGroupTable(BaseTable):
# Clusters # Clusters
# #
class ClusterTable(BaseTable): class ClusterTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
linkify=True linkify=True
) )
@ -107,7 +104,7 @@ class ClusterTable(BaseTable):
url_name='virtualization:cluster_list' url_name='virtualization:cluster_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Cluster model = Cluster
fields = ( fields = (
'pk', 'id', 'name', 'type', 'group', 'tenant', 'site', 'comments', 'device_count', 'vm_count', 'tags', 'pk', 'id', 'name', 'type', 'group', 'tenant', 'site', 'comments', 'device_count', 'vm_count', 'tags',
@ -120,8 +117,7 @@ class ClusterTable(BaseTable):
# Virtual machines # Virtual machines
# #
class VirtualMachineTable(BaseTable): class VirtualMachineTable(NetBoxTable):
pk = columns.ToggleColumn()
name = tables.Column( name = tables.Column(
order_by=('_name',), order_by=('_name',),
linkify=True linkify=True
@ -150,7 +146,7 @@ class VirtualMachineTable(BaseTable):
url_name='virtualization:virtualmachine_list' url_name='virtualization:virtualmachine_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VirtualMachine model = VirtualMachine
fields = ( fields = (
'pk', 'id', 'name', 'status', 'cluster', 'role', 'tenant', 'platform', 'vcpus', 'memory', 'disk', 'pk', 'id', 'name', 'status', 'cluster', 'role', 'tenant', 'platform', 'vcpus', 'memory', 'disk',
@ -166,7 +162,6 @@ class VirtualMachineTable(BaseTable):
# #
class VMInterfaceTable(BaseInterfaceTable): class VMInterfaceTable(BaseInterfaceTable):
pk = columns.ToggleColumn()
virtual_machine = tables.Column( virtual_machine = tables.Column(
linkify=True linkify=True
) )
@ -177,7 +172,7 @@ class VMInterfaceTable(BaseInterfaceTable):
url_name='virtualization:vminterface_list' url_name='virtualization:vminterface_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VMInterface model = VMInterface
fields = ( fields = (
'pk', 'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags', 'pk', 'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags',
@ -198,7 +193,7 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable):
extra_buttons=VMINTERFACE_BUTTONS extra_buttons=VMINTERFACE_BUTTONS
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = VMInterface model = VMInterface
fields = ( fields = (
'pk', 'id', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags', 'pk', 'id', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags',

View File

@ -1,7 +1,7 @@
import django_tables2 as tables import django_tables2 as tables
from dcim.models import Interface from dcim.models import Interface
from netbox.tables import BaseTable, columns from netbox.tables import NetBoxTable, columns
from .models import * from .models import *
__all__ = ( __all__ = (
@ -11,8 +11,7 @@ __all__ = (
) )
class WirelessLANGroupTable(BaseTable): class WirelessLANGroupTable(NetBoxTable):
pk = columns.ToggleColumn()
name = columns.MPTTColumn( name = columns.MPTTColumn(
linkify=True linkify=True
) )
@ -25,7 +24,7 @@ class WirelessLANGroupTable(BaseTable):
url_name='wireless:wirelesslangroup_list' url_name='wireless:wirelesslangroup_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = WirelessLANGroup model = WirelessLANGroup
fields = ( fields = (
'pk', 'name', 'wirelesslan_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', 'pk', 'name', 'wirelesslan_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
@ -33,8 +32,7 @@ class WirelessLANGroupTable(BaseTable):
default_columns = ('pk', 'name', 'wirelesslan_count', 'description') default_columns = ('pk', 'name', 'wirelesslan_count', 'description')
class WirelessLANTable(BaseTable): class WirelessLANTable(NetBoxTable):
pk = columns.ToggleColumn()
ssid = tables.Column( ssid = tables.Column(
linkify=True linkify=True
) )
@ -48,7 +46,7 @@ class WirelessLANTable(BaseTable):
url_name='wireless:wirelesslan_list' url_name='wireless:wirelesslan_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = WirelessLAN model = WirelessLAN
fields = ( fields = (
'pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'auth_type', 'auth_cipher', 'auth_psk', 'pk', 'ssid', 'group', 'description', 'vlan', 'interface_count', 'auth_type', 'auth_cipher', 'auth_psk',
@ -57,8 +55,7 @@ class WirelessLANTable(BaseTable):
default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'auth_type', 'interface_count') default_columns = ('pk', 'ssid', 'group', 'description', 'vlan', 'auth_type', 'interface_count')
class WirelessLANInterfacesTable(BaseTable): class WirelessLANInterfacesTable(NetBoxTable):
pk = columns.ToggleColumn()
device = tables.Column( device = tables.Column(
linkify=True linkify=True
) )
@ -66,14 +63,13 @@ class WirelessLANInterfacesTable(BaseTable):
linkify=True linkify=True
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = Interface model = Interface
fields = ('pk', 'device', 'name', 'rf_role', 'rf_channel') fields = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
default_columns = ('pk', 'device', 'name', 'rf_role', 'rf_channel') default_columns = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
class WirelessLinkTable(BaseTable): class WirelessLinkTable(NetBoxTable):
pk = columns.ToggleColumn()
id = tables.Column( id = tables.Column(
linkify=True, linkify=True,
verbose_name='ID' verbose_name='ID'
@ -97,7 +93,7 @@ class WirelessLinkTable(BaseTable):
url_name='wireless:wirelesslink_list' url_name='wireless:wirelesslink_list'
) )
class Meta(BaseTable.Meta): class Meta(NetBoxTable.Meta):
model = WirelessLink model = WirelessLink
fields = ( fields = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description', 'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description',