mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-20 20:32:25 -06:00
Closes #13150: Wrap table column headers with gettext()
Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from django_tables2.utils import Accessor
|
||||
from django.utils.safestring import mark_safe
|
||||
@@ -50,60 +51,60 @@ class CableTable(TenancyColumnsMixin, NetBoxTable):
|
||||
a_terminations = CableTerminationsColumn(
|
||||
cable_end='A',
|
||||
orderable=False,
|
||||
verbose_name='Termination A'
|
||||
verbose_name=_('Termination A')
|
||||
)
|
||||
b_terminations = CableTerminationsColumn(
|
||||
cable_end='B',
|
||||
orderable=False,
|
||||
verbose_name='Termination B'
|
||||
verbose_name=_('Termination B')
|
||||
)
|
||||
device_a = CableTerminationsColumn(
|
||||
cable_end='A',
|
||||
attr='_device',
|
||||
orderable=False,
|
||||
verbose_name='Device A'
|
||||
verbose_name=_('Device A')
|
||||
)
|
||||
device_b = CableTerminationsColumn(
|
||||
cable_end='B',
|
||||
attr='_device',
|
||||
orderable=False,
|
||||
verbose_name='Device B'
|
||||
verbose_name=_('Device B')
|
||||
)
|
||||
location_a = CableTerminationsColumn(
|
||||
cable_end='A',
|
||||
attr='_location',
|
||||
orderable=False,
|
||||
verbose_name='Location A'
|
||||
verbose_name=_('Location A')
|
||||
)
|
||||
location_b = CableTerminationsColumn(
|
||||
cable_end='B',
|
||||
attr='_location',
|
||||
orderable=False,
|
||||
verbose_name='Location B'
|
||||
verbose_name=_('Location B')
|
||||
)
|
||||
rack_a = CableTerminationsColumn(
|
||||
cable_end='A',
|
||||
attr='_rack',
|
||||
orderable=False,
|
||||
verbose_name='Rack A'
|
||||
verbose_name=_('Rack A')
|
||||
)
|
||||
rack_b = CableTerminationsColumn(
|
||||
cable_end='B',
|
||||
attr='_rack',
|
||||
orderable=False,
|
||||
verbose_name='Rack B'
|
||||
verbose_name=_('Rack B')
|
||||
)
|
||||
site_a = CableTerminationsColumn(
|
||||
cable_end='A',
|
||||
attr='_site',
|
||||
orderable=False,
|
||||
verbose_name='Site A'
|
||||
verbose_name=_('Site A')
|
||||
)
|
||||
site_b = CableTerminationsColumn(
|
||||
cable_end='B',
|
||||
attr='_site',
|
||||
orderable=False,
|
||||
verbose_name='Site B'
|
||||
verbose_name=_('Site B')
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
length = columns.TemplateColumn(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from django_tables2.utils import Accessor
|
||||
|
||||
@@ -18,15 +19,16 @@ __all__ = (
|
||||
|
||||
class ConsoleConnectionTable(PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify=True
|
||||
)
|
||||
name = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Console Port'
|
||||
verbose_name=_('Console Port')
|
||||
)
|
||||
reachable = columns.BooleanColumn(
|
||||
accessor=Accessor('_path__is_active'),
|
||||
verbose_name='Reachable'
|
||||
verbose_name=_('Reachable')
|
||||
)
|
||||
|
||||
class Meta(BaseTable.Meta):
|
||||
@@ -36,15 +38,16 @@ class ConsoleConnectionTable(PathEndpointTable):
|
||||
|
||||
class PowerConnectionTable(PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify=True
|
||||
)
|
||||
name = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Power Port'
|
||||
verbose_name=_('Power Port')
|
||||
)
|
||||
reachable = columns.BooleanColumn(
|
||||
accessor=Accessor('_path__is_active'),
|
||||
verbose_name='Reachable'
|
||||
verbose_name=_('Reachable')
|
||||
)
|
||||
|
||||
class Meta(BaseTable.Meta):
|
||||
@@ -54,16 +57,18 @@ class PowerConnectionTable(PathEndpointTable):
|
||||
|
||||
class InterfaceConnectionTable(PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
accessor=Accessor('device'),
|
||||
linkify=True
|
||||
)
|
||||
interface = tables.Column(
|
||||
verbose_name=_('Interface'),
|
||||
accessor=Accessor('name'),
|
||||
linkify=True
|
||||
)
|
||||
reachable = columns.BooleanColumn(
|
||||
accessor=Accessor('_path__is_active'),
|
||||
verbose_name='Reachable'
|
||||
verbose_name=_('Reachable')
|
||||
)
|
||||
|
||||
class Meta(BaseTable.Meta):
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from django_tables2.utils import Accessor
|
||||
from django.utils.translation import gettext as _
|
||||
@@ -76,17 +77,18 @@ def get_interface_state_attribute(record):
|
||||
|
||||
class DeviceRoleTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
device_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'role_id': 'pk'},
|
||||
verbose_name='Devices'
|
||||
verbose_name=_('Devices')
|
||||
)
|
||||
vm_count = columns.LinkedCountColumn(
|
||||
viewname='virtualization:virtualmachine_list',
|
||||
url_params={'role_id': 'pk'},
|
||||
verbose_name='VMs'
|
||||
verbose_name=_('VMs')
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
vm_role = columns.BooleanColumn()
|
||||
@@ -112,23 +114,26 @@ class DeviceRoleTable(NetBoxTable):
|
||||
|
||||
class PlatformTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
config_template = tables.Column(
|
||||
verbose_name=_('Config Template'),
|
||||
linkify=True
|
||||
)
|
||||
device_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'platform_id': 'pk'},
|
||||
verbose_name='Devices'
|
||||
verbose_name=_('Devices')
|
||||
)
|
||||
vm_count = columns.LinkedCountColumn(
|
||||
viewname='virtualization:virtualmachine_list',
|
||||
url_params={'platform_id': 'pk'},
|
||||
verbose_name='VMs'
|
||||
verbose_name=_('VMs')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:platform_list'
|
||||
@@ -151,82 +156,94 @@ class PlatformTable(NetBoxTable):
|
||||
|
||||
class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
order_by=('_name',),
|
||||
template_code=DEVICE_LINK,
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
region = tables.Column(
|
||||
verbose_name=_('Region'),
|
||||
accessor=Accessor('site__region'),
|
||||
linkify=True
|
||||
)
|
||||
site_group = tables.Column(
|
||||
accessor=Accessor('site__group'),
|
||||
linkify=True,
|
||||
verbose_name='Site Group'
|
||||
verbose_name=_('Site Group')
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
linkify=True
|
||||
)
|
||||
location = tables.Column(
|
||||
verbose_name=_('Location'),
|
||||
linkify=True
|
||||
)
|
||||
rack = tables.Column(
|
||||
verbose_name=_('Rack'),
|
||||
linkify=True
|
||||
)
|
||||
position = columns.TemplateColumn(
|
||||
verbose_name=_('Position'),
|
||||
template_code='{{ value|floatformat }}'
|
||||
)
|
||||
device_role = columns.ColoredLabelColumn(
|
||||
verbose_name='Role'
|
||||
verbose_name=_('Role')
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
accessor=Accessor('device_type__manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
device_type = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Type'
|
||||
verbose_name=_('Type')
|
||||
)
|
||||
primary_ip = tables.Column(
|
||||
linkify=True,
|
||||
order_by=('primary_ip4', 'primary_ip6'),
|
||||
verbose_name='IP Address'
|
||||
verbose_name=_('IP Address')
|
||||
)
|
||||
primary_ip4 = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='IPv4 Address'
|
||||
verbose_name=_('IPv4 Address')
|
||||
)
|
||||
primary_ip6 = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='IPv6 Address'
|
||||
verbose_name=_('IPv6 Address')
|
||||
)
|
||||
oob_ip = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='OOB IP'
|
||||
)
|
||||
cluster = tables.Column(
|
||||
verbose_name=_('Cluster'),
|
||||
linkify=True
|
||||
)
|
||||
virtual_chassis = tables.Column(
|
||||
verbose_name=_('Virtual Chassis'),
|
||||
linkify=True
|
||||
)
|
||||
vc_position = tables.Column(
|
||||
verbose_name='VC Position'
|
||||
verbose_name=_('VC Position')
|
||||
)
|
||||
vc_priority = tables.Column(
|
||||
verbose_name='VC Priority'
|
||||
verbose_name=_('VC Priority')
|
||||
)
|
||||
config_template = tables.Column(
|
||||
verbose_name=_('Config Template'),
|
||||
linkify=True
|
||||
)
|
||||
parent_device = tables.Column(
|
||||
verbose_name='Parent Device',
|
||||
verbose_name=_('Parent Device'),
|
||||
linkify=True,
|
||||
accessor='parent_bay__device'
|
||||
)
|
||||
device_bay_position = tables.Column(
|
||||
verbose_name='Position (Device Bay)',
|
||||
verbose_name=_('Position (Device Bay)'),
|
||||
accessor='parent_bay',
|
||||
linkify=True
|
||||
)
|
||||
@@ -282,21 +299,26 @@ class DeviceTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
|
||||
class DeviceImportTable(TenancyColumnsMixin, NetBoxTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code=DEVICE_LINK,
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
linkify=True
|
||||
)
|
||||
rack = tables.Column(
|
||||
verbose_name=_('Rack'),
|
||||
linkify=True
|
||||
)
|
||||
device_role = tables.Column(
|
||||
verbose_name='Role'
|
||||
verbose_name=_('Role')
|
||||
)
|
||||
device_type = tables.Column(
|
||||
verbose_name='Type'
|
||||
verbose_name=_('Type')
|
||||
)
|
||||
|
||||
class Meta(NetBoxTable.Meta):
|
||||
@@ -311,9 +333,11 @@ class DeviceImportTable(TenancyColumnsMixin, NetBoxTable):
|
||||
|
||||
class DeviceComponentTable(NetBoxTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify=True
|
||||
)
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True,
|
||||
order_by=('_name',)
|
||||
)
|
||||
@@ -324,6 +348,7 @@ class DeviceComponentTable(NetBoxTable):
|
||||
|
||||
class ModularDeviceComponentTable(DeviceComponentTable):
|
||||
module_bay = tables.Column(
|
||||
verbose_name=_('Module Bay'),
|
||||
accessor=Accessor('module__module_bay'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_modulebays',
|
||||
@@ -331,39 +356,44 @@ class ModularDeviceComponentTable(DeviceComponentTable):
|
||||
}
|
||||
)
|
||||
module = tables.Column(
|
||||
verbose_name=_('Module'),
|
||||
linkify=True
|
||||
)
|
||||
|
||||
|
||||
class CableTerminationTable(NetBoxTable):
|
||||
cable = tables.Column(
|
||||
verbose_name=_('Cable'),
|
||||
linkify=True
|
||||
)
|
||||
cable_color = columns.ColorColumn(
|
||||
accessor='cable__color',
|
||||
orderable=False,
|
||||
verbose_name='Cable Color'
|
||||
verbose_name=_('Cable Color')
|
||||
)
|
||||
link_peer = columns.TemplateColumn(
|
||||
accessor='link_peers',
|
||||
template_code=LINKTERMINATION,
|
||||
orderable=False,
|
||||
verbose_name='Link Peers'
|
||||
verbose_name=_('Link Peers')
|
||||
)
|
||||
mark_connected = columns.BooleanColumn(
|
||||
verbose_name=_('Mark Connected'),
|
||||
)
|
||||
mark_connected = columns.BooleanColumn()
|
||||
|
||||
|
||||
class PathEndpointTable(CableTerminationTable):
|
||||
connection = columns.TemplateColumn(
|
||||
accessor='_path__destinations',
|
||||
template_code=LINKTERMINATION,
|
||||
verbose_name='Connection',
|
||||
verbose_name=_('Connection'),
|
||||
orderable=False
|
||||
)
|
||||
|
||||
|
||||
class ConsolePortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_consoleports',
|
||||
'args': [Accessor('device_id')],
|
||||
@@ -384,6 +414,7 @@ class ConsolePortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
|
||||
class DeviceConsolePortTable(ConsolePortTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-console"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
@@ -406,6 +437,7 @@ class DeviceConsolePortTable(ConsolePortTable):
|
||||
|
||||
class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_consoleserverports',
|
||||
'args': [Accessor('device_id')],
|
||||
@@ -426,6 +458,7 @@ class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
|
||||
class DeviceConsoleServerPortTable(ConsoleServerPortTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-console-network-outline"></i> '
|
||||
'<a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -449,6 +482,7 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable):
|
||||
|
||||
class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_powerports',
|
||||
'args': [Accessor('device_id')],
|
||||
@@ -470,6 +504,7 @@ class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
|
||||
class DevicePowerPortTable(PowerPortTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-power-plug-outline"></i> <a href="{{ record.get_absolute_url }}">'
|
||||
'{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -495,12 +530,14 @@ class DevicePowerPortTable(PowerPortTable):
|
||||
|
||||
class PowerOutletTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_poweroutlets',
|
||||
'args': [Accessor('device_id')],
|
||||
}
|
||||
)
|
||||
power_port = tables.Column(
|
||||
verbose_name=_('Power Port'),
|
||||
linkify=True
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
@@ -519,6 +556,7 @@ class PowerOutletTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
|
||||
class DevicePowerOutletTable(PowerOutletTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-power-socket"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
@@ -542,29 +580,34 @@ class DevicePowerOutletTable(PowerOutletTable):
|
||||
|
||||
|
||||
class BaseInterfaceTable(NetBoxTable):
|
||||
enabled = columns.BooleanColumn()
|
||||
enabled = columns.BooleanColumn(
|
||||
verbose_name=_('Enabled'),
|
||||
)
|
||||
ip_addresses = tables.TemplateColumn(
|
||||
template_code=INTERFACE_IPADDRESSES,
|
||||
orderable=False,
|
||||
verbose_name='IP Addresses'
|
||||
verbose_name=_('IP Addresses')
|
||||
)
|
||||
fhrp_groups = tables.TemplateColumn(
|
||||
accessor=Accessor('fhrp_group_assignments'),
|
||||
template_code=INTERFACE_FHRPGROUPS,
|
||||
orderable=False,
|
||||
verbose_name='FHRP Groups'
|
||||
verbose_name=_('FHRP Groups')
|
||||
)
|
||||
l2vpn = tables.Column(
|
||||
accessor=tables.A('l2vpn_termination__l2vpn'),
|
||||
linkify=True,
|
||||
orderable=False,
|
||||
verbose_name='L2VPN'
|
||||
verbose_name=_('L2VPN')
|
||||
)
|
||||
untagged_vlan = tables.Column(
|
||||
verbose_name=_('Untagged VLAN'),
|
||||
linkify=True
|
||||
)
|
||||
untagged_vlan = tables.Column(linkify=True)
|
||||
tagged_vlans = columns.TemplateColumn(
|
||||
template_code=INTERFACE_TAGGED_VLANS,
|
||||
orderable=False,
|
||||
verbose_name='Tagged VLANs'
|
||||
verbose_name=_('Tagged VLANs')
|
||||
)
|
||||
|
||||
def value_ip_addresses(self, value):
|
||||
@@ -573,25 +616,30 @@ class BaseInterfaceTable(NetBoxTable):
|
||||
|
||||
class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_interfaces',
|
||||
'args': [Accessor('device_id')],
|
||||
}
|
||||
)
|
||||
mgmt_only = columns.BooleanColumn()
|
||||
mgmt_only = columns.BooleanColumn(
|
||||
verbose_name=_('Management Only'),
|
||||
)
|
||||
wireless_link = tables.Column(
|
||||
verbose_name=_('Wireless link'),
|
||||
linkify=True
|
||||
)
|
||||
wireless_lans = columns.TemplateColumn(
|
||||
template_code=INTERFACE_WIRELESS_LANS,
|
||||
orderable=False,
|
||||
verbose_name='Wireless LANs'
|
||||
verbose_name=_('Wireless LANs')
|
||||
)
|
||||
vdcs = columns.ManyToManyColumn(
|
||||
linkify_item=True,
|
||||
verbose_name='VDCs'
|
||||
verbose_name=_('VDCs')
|
||||
)
|
||||
vrf = tables.Column(
|
||||
verbose_name=_('VRF'),
|
||||
linkify=True
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
@@ -612,6 +660,7 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi
|
||||
|
||||
class DeviceInterfaceTable(InterfaceTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-{% if record.mgmt_only %}wrench{% elif record.is_lag %}reorder-horizontal'
|
||||
'{% elif record.is_virtual %}circle{% elif record.is_wireless %}wifi{% else %}ethernet'
|
||||
'{% endif %}"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
@@ -619,14 +668,16 @@ class DeviceInterfaceTable(InterfaceTable):
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
parent = tables.Column(
|
||||
verbose_name=_('Parent'),
|
||||
linkify=True
|
||||
)
|
||||
bridge = tables.Column(
|
||||
verbose_name=_('Bridge'),
|
||||
linkify=True
|
||||
)
|
||||
lag = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='LAG'
|
||||
verbose_name=_('LAG')
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
extra_buttons=INTERFACE_BUTTONS
|
||||
@@ -655,16 +706,20 @@ class DeviceInterfaceTable(InterfaceTable):
|
||||
|
||||
class FrontPortTable(ModularDeviceComponentTable, CableTerminationTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_frontports',
|
||||
'args': [Accessor('device_id')],
|
||||
}
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
rear_port_position = tables.Column(
|
||||
verbose_name='Position'
|
||||
verbose_name=_('Position')
|
||||
)
|
||||
rear_port = tables.Column(
|
||||
verbose_name=_('Rear Port'),
|
||||
linkify=True
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
@@ -685,6 +740,7 @@ class FrontPortTable(ModularDeviceComponentTable, CableTerminationTable):
|
||||
|
||||
class DeviceFrontPortTable(FrontPortTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-square-rounded{% if not record.cable %}-outline{% endif %}"></i> '
|
||||
'<a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -710,12 +766,15 @@ class DeviceFrontPortTable(FrontPortTable):
|
||||
|
||||
class RearPortTable(ModularDeviceComponentTable, CableTerminationTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_rearports',
|
||||
'args': [Accessor('device_id')],
|
||||
}
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:rearport_list'
|
||||
)
|
||||
@@ -731,6 +790,7 @@ class RearPortTable(ModularDeviceComponentTable, CableTerminationTable):
|
||||
|
||||
class DeviceRearPortTable(RearPortTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-square-rounded{% if not record.cable %}-outline{% endif %}"></i> '
|
||||
'<a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -756,6 +816,7 @@ class DeviceRearPortTable(RearPortTable):
|
||||
|
||||
class DeviceBayTable(DeviceComponentTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_devicebays',
|
||||
'args': [Accessor('device_id')],
|
||||
@@ -763,18 +824,20 @@ class DeviceBayTable(DeviceComponentTable):
|
||||
)
|
||||
device_role = columns.ColoredLabelColumn(
|
||||
accessor=Accessor('installed_device__device_role'),
|
||||
verbose_name='Role'
|
||||
verbose_name=_('Role')
|
||||
)
|
||||
device_type = tables.Column(
|
||||
accessor=Accessor('installed_device__device_type'),
|
||||
linkify=True,
|
||||
verbose_name='Type'
|
||||
verbose_name=_('Type')
|
||||
)
|
||||
status = tables.TemplateColumn(
|
||||
verbose_name=_('Status'),
|
||||
template_code=DEVICEBAY_STATUS,
|
||||
order_by=Accessor('installed_device__status')
|
||||
)
|
||||
installed_device = tables.Column(
|
||||
verbose_name=_('Installed device'),
|
||||
linkify=True
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
@@ -793,6 +856,7 @@ class DeviceBayTable(DeviceComponentTable):
|
||||
|
||||
class DeviceDeviceBayTable(DeviceBayTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<i class="mdi mdi-circle{% if record.installed_device %}slice-8{% else %}outline{% endif %}'
|
||||
'"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -812,6 +876,7 @@ class DeviceDeviceBayTable(DeviceBayTable):
|
||||
|
||||
class ModuleBayTable(DeviceComponentTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_modulebays',
|
||||
'args': [Accessor('device_id')],
|
||||
@@ -819,18 +884,21 @@ class ModuleBayTable(DeviceComponentTable):
|
||||
)
|
||||
installed_module = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Installed module'
|
||||
verbose_name=_('Installed Module')
|
||||
)
|
||||
module_serial = tables.Column(
|
||||
verbose_name=_('Module Serial'),
|
||||
accessor=tables.A('installed_module__serial')
|
||||
)
|
||||
module_asset_tag = tables.Column(
|
||||
verbose_name=_('Module Asset Tag'),
|
||||
accessor=tables.A('installed_module__asset_tag')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:modulebay_list'
|
||||
)
|
||||
module_status = columns.TemplateColumn(
|
||||
verbose_name=_('Module Status'),
|
||||
template_code=MODULEBAY_STATUS
|
||||
)
|
||||
|
||||
@@ -859,20 +927,27 @@ class DeviceModuleBayTable(ModuleBayTable):
|
||||
|
||||
class InventoryItemTable(DeviceComponentTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_inventory',
|
||||
'args': [Accessor('device_id')],
|
||||
}
|
||||
)
|
||||
role = columns.ColoredLabelColumn()
|
||||
role = columns.ColoredLabelColumn(
|
||||
verbose_name=_('Role'),
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
component = tables.Column(
|
||||
verbose_name=_('Component'),
|
||||
orderable=False,
|
||||
linkify=True
|
||||
)
|
||||
discovered = columns.BooleanColumn()
|
||||
discovered = columns.BooleanColumn(
|
||||
verbose_name=_('Discovered'),
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:inventoryitem_list'
|
||||
)
|
||||
@@ -891,6 +966,7 @@ class InventoryItemTable(DeviceComponentTable):
|
||||
|
||||
class DeviceInventoryItemTable(InventoryItemTable):
|
||||
name = tables.TemplateColumn(
|
||||
verbose_name=_('Name'),
|
||||
template_code='<a href="{{ record.get_absolute_url }}" style="padding-left: {{ record.level }}0px">'
|
||||
'{{ value }}</a>',
|
||||
order_by=Accessor('_name'),
|
||||
@@ -910,14 +986,17 @@ class DeviceInventoryItemTable(InventoryItemTable):
|
||||
|
||||
class InventoryItemRoleTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
inventoryitem_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:inventoryitem_list',
|
||||
url_params={'role_id': 'pk'},
|
||||
verbose_name='Items'
|
||||
verbose_name=_('Items')
|
||||
)
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:inventoryitemrole_list'
|
||||
)
|
||||
@@ -936,17 +1015,21 @@ class InventoryItemRoleTable(NetBoxTable):
|
||||
|
||||
class VirtualChassisTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
master = tables.Column(
|
||||
verbose_name=_('Master'),
|
||||
linkify=True
|
||||
)
|
||||
member_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'virtual_chassis_id': 'pk'},
|
||||
verbose_name='Members'
|
||||
verbose_name=_('Members')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:virtualchassis_list'
|
||||
)
|
||||
@@ -962,31 +1045,35 @@ class VirtualChassisTable(NetBoxTable):
|
||||
|
||||
class VirtualDeviceContextTable(TenancyColumnsMixin, NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
device = tables.TemplateColumn(
|
||||
verbose_name=_('Device'),
|
||||
order_by=('_name',),
|
||||
template_code=DEVICE_LINK,
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
primary_ip = tables.Column(
|
||||
linkify=True,
|
||||
order_by=('primary_ip4', 'primary_ip6'),
|
||||
verbose_name='IP Address'
|
||||
verbose_name=_('IP Address')
|
||||
)
|
||||
primary_ip4 = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='IPv4 Address'
|
||||
verbose_name=_('IPv4 Address')
|
||||
)
|
||||
primary_ip6 = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='IPv6 Address'
|
||||
verbose_name=_('IPv6 Address')
|
||||
)
|
||||
interface_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:interface_list',
|
||||
url_params={'vdc_id': 'pk'},
|
||||
verbose_name='Interfaces'
|
||||
verbose_name=_('Interfaces')
|
||||
)
|
||||
|
||||
comments = columns.MarkdownColumn()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
@@ -28,27 +29,28 @@ __all__ = (
|
||||
|
||||
class ManufacturerTable(ContactsColumnMixin, NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
devicetype_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:devicetype_list',
|
||||
url_params={'manufacturer_id': 'pk'},
|
||||
verbose_name='Device Types'
|
||||
verbose_name=_('Device Types')
|
||||
)
|
||||
moduletype_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:moduletype_list',
|
||||
url_params={'manufacturer_id': 'pk'},
|
||||
verbose_name='Module Types'
|
||||
verbose_name=_('Module Types')
|
||||
)
|
||||
inventoryitem_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:inventoryitem_list',
|
||||
url_params={'manufacturer_id': 'pk'},
|
||||
verbose_name='Inventory Items'
|
||||
verbose_name=_('Inventory Items')
|
||||
)
|
||||
platform_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:platform_list',
|
||||
url_params={'manufacturer_id': 'pk'},
|
||||
verbose_name='Platforms'
|
||||
verbose_name=_('Platforms')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:manufacturer_list'
|
||||
@@ -73,62 +75,68 @@ class ManufacturerTable(ContactsColumnMixin, NetBoxTable):
|
||||
class DeviceTypeTable(NetBoxTable):
|
||||
model = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Device Type'
|
||||
verbose_name=_('Device Type')
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
default_platform = tables.Column(
|
||||
verbose_name=_('Default Platform'),
|
||||
linkify=True
|
||||
)
|
||||
is_full_depth = columns.BooleanColumn(
|
||||
verbose_name='Full Depth'
|
||||
verbose_name=_('Full Depth')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:devicetype_list'
|
||||
)
|
||||
u_height = columns.TemplateColumn(
|
||||
verbose_name=_('U Height'),
|
||||
template_code='{{ value|floatformat }}'
|
||||
)
|
||||
weight = columns.TemplateColumn(
|
||||
verbose_name=_('Weight'),
|
||||
template_code=WEIGHT,
|
||||
order_by=('_abs_weight', 'weight_unit')
|
||||
)
|
||||
instance_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'device_type_id': 'pk'},
|
||||
verbose_name='Instances'
|
||||
verbose_name=_('Instances')
|
||||
)
|
||||
console_port_template_count = tables.Column(
|
||||
verbose_name=_('Console ports')
|
||||
verbose_name=_('Console Ports')
|
||||
)
|
||||
console_server_port_template_count = tables.Column(
|
||||
verbose_name=_('Console server ports')
|
||||
verbose_name=_('Console Server Ports')
|
||||
)
|
||||
power_port_template_count = tables.Column(
|
||||
verbose_name=_('Power ports')
|
||||
verbose_name=_('Power Ports')
|
||||
)
|
||||
power_outlet_template_count = tables.Column(
|
||||
verbose_name=_('Power outlets')
|
||||
verbose_name=_('Power Outlets')
|
||||
)
|
||||
interface_template_count = tables.Column(
|
||||
verbose_name=_('Interfaces')
|
||||
)
|
||||
front_port_template_count = tables.Column(
|
||||
verbose_name=_('Front ports')
|
||||
verbose_name=_('Front Ports')
|
||||
)
|
||||
rear_port_template_count = tables.Column(
|
||||
verbose_name=_('Rear ports')
|
||||
verbose_name=_('Rear Ports')
|
||||
)
|
||||
device_bay_template_count = tables.Column(
|
||||
verbose_name=_('Device bays')
|
||||
verbose_name=_('Device Bays')
|
||||
)
|
||||
module_bay_template_count = tables.Column(
|
||||
verbose_name=_('Module bays')
|
||||
verbose_name=_('Module Bays')
|
||||
)
|
||||
inventory_item_template_count = tables.Column(
|
||||
verbose_name=_('Inventory items')
|
||||
verbose_name=_('Inventory Items')
|
||||
)
|
||||
|
||||
class Meta(NetBoxTable.Meta):
|
||||
@@ -149,7 +157,7 @@ class DeviceTypeTable(NetBoxTable):
|
||||
|
||||
class ComponentTemplateTable(NetBoxTable):
|
||||
id = tables.Column(
|
||||
verbose_name='ID'
|
||||
verbose_name=_('ID')
|
||||
)
|
||||
name = tables.Column(
|
||||
order_by=('_name',)
|
||||
@@ -208,9 +216,11 @@ class PowerOutletTemplateTable(ComponentTemplateTable):
|
||||
|
||||
|
||||
class InterfaceTemplateTable(ComponentTemplateTable):
|
||||
enabled = columns.BooleanColumn()
|
||||
enabled = columns.BooleanColumn(
|
||||
verbose_name=_('Enabled'),
|
||||
)
|
||||
mgmt_only = columns.BooleanColumn(
|
||||
verbose_name='Management Only'
|
||||
verbose_name=_('Management Only')
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
actions=('edit', 'delete'),
|
||||
@@ -228,9 +238,11 @@ class InterfaceTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class FrontPortTemplateTable(ComponentTemplateTable):
|
||||
rear_port_position = tables.Column(
|
||||
verbose_name='Position'
|
||||
verbose_name=_('Position')
|
||||
)
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
actions = columns.ActionsColumn(
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
@@ -243,7 +255,9 @@ class FrontPortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
|
||||
class RearPortTemplateTable(ComponentTemplateTable):
|
||||
color = columns.ColorColumn()
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
@@ -282,12 +296,15 @@ class InventoryItemTemplateTable(ComponentTemplateTable):
|
||||
actions=('edit', 'delete')
|
||||
)
|
||||
role = tables.Column(
|
||||
verbose_name=_('Role'),
|
||||
linkify=True
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
component = tables.Column(
|
||||
verbose_name=_('Component'),
|
||||
orderable=False
|
||||
)
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
|
||||
from dcim.models import Module, ModuleType
|
||||
@@ -13,21 +14,25 @@ __all__ = (
|
||||
class ModuleTypeTable(NetBoxTable):
|
||||
model = tables.Column(
|
||||
linkify=True,
|
||||
verbose_name='Module Type'
|
||||
verbose_name=_('Module Type')
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
instance_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:module_list',
|
||||
url_params={'module_type_id': 'pk'},
|
||||
verbose_name='Instances'
|
||||
verbose_name=_('Instances')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:moduletype_list'
|
||||
)
|
||||
weight = columns.TemplateColumn(
|
||||
verbose_name=_('Weight'),
|
||||
template_code=WEIGHT,
|
||||
order_by=('_abs_weight', 'weight_unit')
|
||||
)
|
||||
@@ -44,20 +49,28 @@ class ModuleTypeTable(NetBoxTable):
|
||||
|
||||
class ModuleTable(NetBoxTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify=True
|
||||
)
|
||||
module_bay = tables.Column(
|
||||
verbose_name=_('Module Bay'),
|
||||
linkify=True
|
||||
)
|
||||
manufacturer = tables.Column(
|
||||
verbose_name=_('Manufacturer'),
|
||||
accessor=tables.A('module_type__manufacturer'),
|
||||
linkify=True
|
||||
)
|
||||
module_type = tables.Column(
|
||||
verbose_name=_('Module Type'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
comments = columns.MarkdownColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:module_list'
|
||||
)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from dcim.models import PowerFeed, PowerPanel
|
||||
from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
|
||||
@@ -18,20 +19,25 @@ __all__ = (
|
||||
|
||||
class PowerPanelTable(ContactsColumnMixin, NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
linkify=True
|
||||
)
|
||||
location = tables.Column(
|
||||
verbose_name=_('Location'),
|
||||
linkify=True
|
||||
)
|
||||
powerfeed_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:powerfeed_list',
|
||||
url_params={'power_panel_id': 'pk'},
|
||||
verbose_name='Feeds'
|
||||
verbose_name=_('Power Feeds')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:powerpanel_list'
|
||||
)
|
||||
@@ -53,26 +59,37 @@ class PowerPanelTable(ContactsColumnMixin, NetBoxTable):
|
||||
# cannot traverse pass-through ports.
|
||||
class PowerFeedTable(TenancyColumnsMixin, CableTerminationTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
power_panel = tables.Column(
|
||||
verbose_name=_('Power Panel'),
|
||||
linkify=True
|
||||
)
|
||||
rack = tables.Column(
|
||||
verbose_name=_('Rack'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
type = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
type = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Type'),
|
||||
)
|
||||
max_utilization = tables.TemplateColumn(
|
||||
verbose_name=_('Max Utilization'),
|
||||
template_code="{{ value }}%"
|
||||
)
|
||||
available_power = tables.Column(
|
||||
verbose_name='Available power (VA)'
|
||||
verbose_name=_('Available Power (VA)')
|
||||
)
|
||||
tenant = tables.Column(
|
||||
linkify=True
|
||||
linkify=True,
|
||||
verbose_name=_('Tenant')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:powerfeed_list'
|
||||
)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from django_tables2.utils import Accessor
|
||||
|
||||
@@ -18,13 +19,18 @@ __all__ = (
|
||||
#
|
||||
|
||||
class RackRoleTable(NetBoxTable):
|
||||
name = tables.Column(linkify=True)
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
rack_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:rack_list',
|
||||
url_params={'role_id': 'pk'},
|
||||
verbose_name='Racks'
|
||||
verbose_name=_('Racks')
|
||||
)
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
color = columns.ColorColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:rackrole_list'
|
||||
)
|
||||
@@ -44,51 +50,62 @@ class RackRoleTable(NetBoxTable):
|
||||
|
||||
class RackTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
order_by=('_name',),
|
||||
linkify=True
|
||||
)
|
||||
location = tables.Column(
|
||||
verbose_name=_('Location'),
|
||||
linkify=True
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
role = columns.ColoredLabelColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
role = columns.ColoredLabelColumn(
|
||||
verbose_name=_('Role'),
|
||||
)
|
||||
u_height = tables.TemplateColumn(
|
||||
template_code="{{ value }}U",
|
||||
verbose_name='Height'
|
||||
verbose_name=_('Height')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
device_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'rack_id': 'pk'},
|
||||
verbose_name='Devices'
|
||||
verbose_name=_('Devices')
|
||||
)
|
||||
get_utilization = columns.UtilizationColumn(
|
||||
orderable=False,
|
||||
verbose_name='Space'
|
||||
verbose_name=_('Space')
|
||||
)
|
||||
get_power_utilization = columns.UtilizationColumn(
|
||||
orderable=False,
|
||||
verbose_name='Power'
|
||||
verbose_name=_('Power')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:rack_list'
|
||||
)
|
||||
outer_width = tables.TemplateColumn(
|
||||
template_code="{{ record.outer_width }} {{ record.outer_unit }}",
|
||||
verbose_name='Outer Width'
|
||||
verbose_name=_('Outer Width')
|
||||
)
|
||||
outer_depth = tables.TemplateColumn(
|
||||
template_code="{{ record.outer_depth }} {{ record.outer_unit }}",
|
||||
verbose_name='Outer Depth'
|
||||
verbose_name=_('Outer Depth')
|
||||
)
|
||||
weight = columns.TemplateColumn(
|
||||
verbose_name=_('Weight'),
|
||||
template_code=WEIGHT,
|
||||
order_by=('_abs_weight', 'weight_unit')
|
||||
)
|
||||
max_weight = columns.TemplateColumn(
|
||||
verbose_name=_('Max Weight'),
|
||||
template_code=WEIGHT,
|
||||
order_by=('_abs_max_weight', 'weight_unit')
|
||||
)
|
||||
@@ -113,25 +130,31 @@ class RackTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
|
||||
class RackReservationTable(TenancyColumnsMixin, NetBoxTable):
|
||||
reservation = tables.Column(
|
||||
verbose_name=_('Reservation'),
|
||||
accessor='pk',
|
||||
linkify=True
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
accessor=Accessor('rack__site'),
|
||||
linkify=True
|
||||
)
|
||||
location = tables.Column(
|
||||
verbose_name=_('Location'),
|
||||
accessor=Accessor('rack__location'),
|
||||
linkify=True
|
||||
)
|
||||
rack = tables.Column(
|
||||
verbose_name=_('Rack'),
|
||||
linkify=True
|
||||
)
|
||||
unit_list = tables.Column(
|
||||
orderable=False,
|
||||
verbose_name='Units'
|
||||
verbose_name=_('Units')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:rackreservation_list'
|
||||
)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
from dcim.models import Location, Region, Site, SiteGroup
|
||||
from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
|
||||
@@ -20,12 +21,13 @@ __all__ = (
|
||||
|
||||
class RegionTable(ContactsColumnMixin, NetBoxTable):
|
||||
name = columns.MPTTColumn(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
site_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:site_list',
|
||||
url_params={'region_id': 'pk'},
|
||||
verbose_name='Sites'
|
||||
verbose_name=_('Sites')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:region_list'
|
||||
@@ -46,12 +48,13 @@ class RegionTable(ContactsColumnMixin, NetBoxTable):
|
||||
|
||||
class SiteGroupTable(ContactsColumnMixin, NetBoxTable):
|
||||
name = columns.MPTTColumn(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
site_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:site_list',
|
||||
url_params={'group_id': 'pk'},
|
||||
verbose_name='Sites'
|
||||
verbose_name=_('Sites')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:sitegroup_list'
|
||||
@@ -72,26 +75,33 @@ class SiteGroupTable(ContactsColumnMixin, NetBoxTable):
|
||||
|
||||
class SiteTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
region = tables.Column(
|
||||
verbose_name=_('Region'),
|
||||
linkify=True
|
||||
)
|
||||
group = tables.Column(
|
||||
verbose_name=_('Group'),
|
||||
linkify=True
|
||||
)
|
||||
asns = columns.ManyToManyColumn(
|
||||
linkify_item=True,
|
||||
verbose_name='ASNs'
|
||||
verbose_name=_('ASNs')
|
||||
)
|
||||
asn_count = columns.LinkedCountColumn(
|
||||
accessor=tables.A('asns__count'),
|
||||
viewname='ipam:asn_list',
|
||||
url_params={'site_id': 'pk'},
|
||||
verbose_name='ASN Count'
|
||||
verbose_name=_('ASN Count')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:site_list'
|
||||
)
|
||||
@@ -112,21 +122,25 @@ class SiteTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
|
||||
class LocationTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
|
||||
name = columns.MPTTColumn(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
site = tables.Column(
|
||||
verbose_name=_('Site'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
rack_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:rack_list',
|
||||
url_params={'location_id': 'pk'},
|
||||
verbose_name='Racks'
|
||||
verbose_name=_('Racks')
|
||||
)
|
||||
device_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'location_id': 'pk'},
|
||||
verbose_name='Devices'
|
||||
verbose_name=_('Devices')
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:location_list'
|
||||
|
||||
Reference in New Issue
Block a user