mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
13150 internationalize dcim tables
This commit is contained in:
parent
d39a99f0e1
commit
a4c7fb8294
@ -1,3 +1,4 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
import django_tables2 as tables
|
||||
|
||||
from core.models import *
|
||||
@ -11,11 +12,18 @@ __all__ = (
|
||||
|
||||
class DataSourceTable(NetBoxTable):
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
type = columns.ChoiceFieldColumn()
|
||||
status = columns.ChoiceFieldColumn()
|
||||
enabled = columns.BooleanColumn()
|
||||
type = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Type'),
|
||||
)
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
enabled = columns.BooleanColumn(
|
||||
verbose_name=_('Enabled'),
|
||||
)
|
||||
tags = columns.TagColumn(
|
||||
url_name='core:datasource_list'
|
||||
)
|
||||
@ -34,13 +42,18 @@ class DataSourceTable(NetBoxTable):
|
||||
|
||||
class DataFileTable(NetBoxTable):
|
||||
source = tables.Column(
|
||||
verbose_name=_('Source'),
|
||||
linkify=True
|
||||
)
|
||||
path = tables.Column(
|
||||
verbose_name=_('Path'),
|
||||
linkify=True
|
||||
)
|
||||
last_updated = columns.DateTimeColumn()
|
||||
last_updated = columns.DateTimeColumn(
|
||||
verbose_name=_('Last updated'),
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('delete',)
|
||||
)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
import django_tables2 as tables
|
||||
from django.utils.translation import gettext as _
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from netbox.tables import NetBoxTable, columns
|
||||
from ..models import Job
|
||||
@ -7,24 +7,40 @@ from ..models import Job
|
||||
|
||||
class JobTable(NetBoxTable):
|
||||
id = tables.Column(
|
||||
verbose_name=_('Id'),
|
||||
linkify=True
|
||||
)
|
||||
name = tables.Column(
|
||||
verbose_name=_('Name'),
|
||||
linkify=True
|
||||
)
|
||||
object_type = columns.ContentTypeColumn(
|
||||
verbose_name=_('Type')
|
||||
)
|
||||
object = tables.Column(
|
||||
verbose_name=_('Object'),
|
||||
linkify=True
|
||||
)
|
||||
status = columns.ChoiceFieldColumn()
|
||||
created = columns.DateTimeColumn()
|
||||
scheduled = columns.DateTimeColumn()
|
||||
interval = columns.DurationColumn()
|
||||
started = columns.DateTimeColumn()
|
||||
completed = columns.DateTimeColumn()
|
||||
status = columns.ChoiceFieldColumn(
|
||||
verbose_name=_('Status'),
|
||||
)
|
||||
created = columns.DateTimeColumn(
|
||||
verbose_name=_('Created'),
|
||||
)
|
||||
scheduled = columns.DateTimeColumn(
|
||||
verbose_name=_('Scheduled'),
|
||||
)
|
||||
interval = columns.DurationColumn(
|
||||
verbose_name=_('Interval'),
|
||||
)
|
||||
started = columns.DateTimeColumn(
|
||||
verbose_name=_('Started'),
|
||||
)
|
||||
completed = columns.DateTimeColumn(
|
||||
verbose_name=_('Completed'),
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('delete',)
|
||||
)
|
||||
|
||||
|
@ -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 dcim import models
|
||||
from django_tables2.utils import Accessor
|
||||
@ -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,78 +156,90 @@ 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')
|
||||
)
|
||||
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
|
||||
)
|
||||
@ -248,21 +265,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):
|
||||
@ -277,9 +299,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',)
|
||||
)
|
||||
@ -290,6 +314,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',
|
||||
@ -297,39 +322,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')],
|
||||
@ -350,11 +380,13 @@ 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'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=CONSOLEPORT_BUTTONS
|
||||
)
|
||||
|
||||
@ -372,6 +404,7 @@ class DeviceConsolePortTable(ConsolePortTable):
|
||||
|
||||
class ConsoleServerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_consoleserverports',
|
||||
'args': [Accessor('device_id')],
|
||||
@ -392,12 +425,14 @@ 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'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=CONSOLESERVERPORT_BUTTONS
|
||||
)
|
||||
|
||||
@ -415,6 +450,7 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable):
|
||||
|
||||
class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_powerports',
|
||||
'args': [Accessor('device_id')],
|
||||
@ -436,12 +472,14 @@ 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'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=POWERPORT_BUTTONS
|
||||
)
|
||||
|
||||
@ -461,12 +499,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(
|
||||
@ -485,11 +525,13 @@ 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'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=POWEROUTLET_BUTTONS
|
||||
)
|
||||
|
||||
@ -508,29 +550,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):
|
||||
@ -539,25 +586,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=_('Mgmt 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(
|
||||
@ -578,6 +630,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>',
|
||||
@ -585,16 +638,19 @@ 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(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=INTERFACE_BUTTONS
|
||||
)
|
||||
|
||||
@ -621,16 +677,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(
|
||||
@ -651,12 +711,14 @@ 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'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=FRONTPORT_BUTTONS
|
||||
)
|
||||
|
||||
@ -676,12 +738,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'
|
||||
)
|
||||
@ -697,12 +762,14 @@ 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'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=REARPORT_BUTTONS
|
||||
)
|
||||
|
||||
@ -722,6 +789,7 @@ class DeviceRearPortTable(RearPortTable):
|
||||
|
||||
class DeviceBayTable(DeviceComponentTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_devicebays',
|
||||
'args': [Accessor('device_id')],
|
||||
@ -729,18 +797,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(
|
||||
@ -759,12 +829,14 @@ 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'),
|
||||
attrs={'td': {'class': 'text-nowrap'}}
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=DEVICEBAY_BUTTONS
|
||||
)
|
||||
|
||||
@ -778,6 +850,7 @@ class DeviceDeviceBayTable(DeviceBayTable):
|
||||
|
||||
class ModuleBayTable(DeviceComponentTable):
|
||||
device = tables.Column(
|
||||
verbose_name=_('Device'),
|
||||
linkify={
|
||||
'viewname': 'dcim:device_modulebays',
|
||||
'args': [Accessor('device_id')],
|
||||
@ -785,18 +858,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
|
||||
)
|
||||
|
||||
@ -811,6 +887,7 @@ class ModuleBayTable(DeviceComponentTable):
|
||||
|
||||
class DeviceModuleBayTable(ModuleBayTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=MODULEBAY_BUTTONS
|
||||
)
|
||||
|
||||
@ -825,20 +902,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'
|
||||
)
|
||||
@ -857,6 +941,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'),
|
||||
@ -876,14 +961,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'
|
||||
)
|
||||
@ -902,17 +990,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'
|
||||
)
|
||||
@ -928,31 +1020,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 dcim import models
|
||||
@ -27,27 +28,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'
|
||||
@ -72,30 +74,36 @@ 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')
|
||||
)
|
||||
instance_count = columns.LinkedCountColumn(
|
||||
viewname='dcim:device_list',
|
||||
url_params={'device_type_id': 'pk'},
|
||||
verbose_name='Instances'
|
||||
verbose_name=_('Instances')
|
||||
)
|
||||
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')
|
||||
)
|
||||
@ -117,7 +125,7 @@ class DeviceTypeTable(NetBoxTable):
|
||||
|
||||
class ComponentTemplateTable(NetBoxTable):
|
||||
id = tables.Column(
|
||||
verbose_name='ID'
|
||||
verbose_name=_('ID')
|
||||
)
|
||||
name = tables.Column(
|
||||
order_by=('_name',)
|
||||
@ -129,6 +137,7 @@ class ComponentTemplateTable(NetBoxTable):
|
||||
|
||||
class ConsolePortTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -141,6 +150,7 @@ class ConsolePortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class ConsoleServerPortTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -153,6 +163,7 @@ class ConsoleServerPortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class PowerPortTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -165,6 +176,7 @@ class PowerPortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class PowerOutletTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -176,11 +188,14 @@ 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(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -193,10 +208,13 @@ 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(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -208,8 +226,11 @@ class FrontPortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
|
||||
class RearPortTemplateTable(ComponentTemplateTable):
|
||||
color = columns.ColorColumn()
|
||||
color = columns.ColorColumn(
|
||||
verbose_name=_('Color'),
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete'),
|
||||
extra_buttons=MODULAR_COMPONENT_TEMPLATE_BUTTONS
|
||||
)
|
||||
@ -222,6 +243,7 @@ class RearPortTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class ModuleBayTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete')
|
||||
)
|
||||
|
||||
@ -233,6 +255,7 @@ class ModuleBayTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class DeviceBayTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
actions=('edit', 'delete')
|
||||
)
|
||||
|
||||
@ -244,15 +267,19 @@ class DeviceBayTemplateTable(ComponentTemplateTable):
|
||||
|
||||
class InventoryItemTemplateTable(ComponentTemplateTable):
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
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
|
||||
@ -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=_('Feeds')
|
||||
)
|
||||
comments = columns.MarkdownColumn(
|
||||
verbose_name=_('Comments'),
|
||||
)
|
||||
comments = columns.MarkdownColumn()
|
||||
tags = columns.TagColumn(
|
||||
url_name='dcim:powerpanel_list'
|
||||
)
|
||||
@ -53,23 +59,33 @@ class PowerPanelTable(ContactsColumnMixin, NetBoxTable):
|
||||
# cannot traverse pass-through ports.
|
||||
class PowerFeedTable(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)')
|
||||
)
|
||||
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,26 +122,31 @@ 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'
|
||||
)
|
||||
actions = columns.ActionsColumn(
|
||||
verbose_name=_('Actions'),
|
||||
extra_buttons=LOCATION_BUTTONS
|
||||
)
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
LINKTERMINATION = """
|
||||
{% for termination in value %}
|
||||
{% if termination.parent_object %}
|
||||
@ -20,11 +22,11 @@ WEIGHT = """
|
||||
{% if value %}{{ value|floatformat:"-2" }} {{ record.weight_unit }}{% endif %}
|
||||
"""
|
||||
|
||||
DEVICE_LINK = """
|
||||
DEVICE_LINK = _("""
|
||||
{{ value|default:'<span class="badge bg-info">Unnamed device</span>' }}
|
||||
"""
|
||||
""")
|
||||
|
||||
DEVICEBAY_STATUS = """
|
||||
DEVICEBAY_STATUS = _("""
|
||||
{% if record.installed_device_id %}
|
||||
<span class="badge bg-{{ record.installed_device.get_status_color }}">
|
||||
{{ record.installed_device.get_status_display }}
|
||||
@ -32,7 +34,7 @@ DEVICEBAY_STATUS = """
|
||||
{% else %}
|
||||
<span class="badge bg-secondary">Vacant</span>
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
INTERFACE_IPADDRESSES = """
|
||||
<div class="table-badge-group">
|
||||
@ -54,7 +56,7 @@ INTERFACE_FHRPGROUPS = """
|
||||
</div>
|
||||
"""
|
||||
|
||||
INTERFACE_TAGGED_VLANS = """
|
||||
INTERFACE_TAGGED_VLANS = _("""
|
||||
{% if record.mode == 'tagged' %}
|
||||
{% for vlan in value.all %}
|
||||
<a href="{{ vlan.get_absolute_url }}">{{ vlan }}</a><br />
|
||||
@ -62,7 +64,7 @@ INTERFACE_TAGGED_VLANS = """
|
||||
{% elif record.mode == 'tagged-all' %}
|
||||
All
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
INTERFACE_WIRELESS_LANS = """
|
||||
{% for wlan in value.all %}
|
||||
@ -106,7 +108,7 @@ MODULAR_COMPONENT_TEMPLATE_BUTTONS = """
|
||||
# Device component buttons
|
||||
#
|
||||
|
||||
CONSOLEPORT_BUTTONS = """
|
||||
CONSOLEPORT_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_consoleports' pk=object.pk %}" class="btn btn-sm btn-success" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -154,9 +156,9 @@ CONSOLEPORT_BUTTONS = """
|
||||
{% else %}
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
CONSOLESERVERPORT_BUTTONS = """
|
||||
CONSOLESERVERPORT_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_consoleserverports' pk=object.pk %}" class="btn btn-sm btn-success" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -204,9 +206,9 @@ CONSOLESERVERPORT_BUTTONS = """
|
||||
{% else %}
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
POWERPORT_BUTTONS = """
|
||||
POWERPORT_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_powerports' pk=object.pk %}" class="btn btn-sm btn-primary" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -253,9 +255,9 @@ POWERPORT_BUTTONS = """
|
||||
{% else %}
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
POWEROUTLET_BUTTONS = """
|
||||
POWEROUTLET_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_poweroutlets' pk=object.pk %}" class="btn btn-sm btn-primary" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -298,9 +300,9 @@ POWEROUTLET_BUTTONS = """
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
INTERFACE_BUTTONS = """
|
||||
INTERFACE_BUTTONS = _("""
|
||||
{% if perms.dcim.change_interface %}
|
||||
<span class="dropdown">
|
||||
<button type="button" class="btn btn-primary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="Add">
|
||||
@ -382,9 +384,9 @@ INTERFACE_BUTTONS = """
|
||||
<span class="mdi mdi-wifi-plus" aria-hidden="true"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
FRONTPORT_BUTTONS = """
|
||||
FRONTPORT_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_frontports' pk=object.pk %}" class="btn btn-sm btn-primary" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -437,9 +439,9 @@ FRONTPORT_BUTTONS = """
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
REARPORT_BUTTONS = """
|
||||
REARPORT_BUTTONS = _("""
|
||||
{% if perms.dcim.add_inventoryitem %}
|
||||
<a href="{% url 'dcim:inventoryitem_add' %}?device={{ record.device_id }}&component_type={{ record|content_type_id }}&component_id={{ record.pk }}&return_url={% url 'dcim:device_rearports' pk=object.pk %}" class="btn btn-sm btn-primary" title="Add inventory item">
|
||||
<i class="mdi mdi-plus-thick" aria-hidden="true"></i>
|
||||
@ -492,7 +494,7 @@ REARPORT_BUTTONS = """
|
||||
<a href="#" class="btn btn-outline-dark btn-sm disabled"><i class="mdi mdi-ethernet-cable" aria-hidden="true"></i></a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
"""
|
||||
""")
|
||||
|
||||
DEVICEBAY_BUTTONS = """
|
||||
{% if perms.dcim.change_devicebay %}
|
||||
|
Loading…
Reference in New Issue
Block a user