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

Refactor tables modules

This commit is contained in:
jeremystretch
2022-03-03 15:16:23 -05:00
parent 64acfc3187
commit d4d2af46ac
18 changed files with 324 additions and 320 deletions

View File

@ -0,0 +1,3 @@
from .circuits import *
from .columns import *
from .providers import *

View File

@ -1,15 +1,13 @@
import django_tables2 as tables
from django_tables2.utils import Accessor
from circuits.models import *
from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn
from .models import *
from .columns import CommitRateColumn
__all__ = (
'CircuitTable',
'CircuitTypeTable',
'ProviderTable',
'ProviderNetworkTable',
)
@ -22,81 +20,6 @@ CIRCUITTERMINATION_LINK = """
"""
#
# Table columns
#
class CommitRateColumn(tables.TemplateColumn):
"""
Humanize the commit rate in the column view
"""
template_code = """
{% load helpers %}
{{ record.commit_rate|humanize_speed }}
"""
def __init__(self, *args, **kwargs):
super().__init__(template_code=self.template_code, *args, **kwargs)
def value(self, value):
return str(value) if value else None
#
# Providers
#
class ProviderTable(NetBoxTable):
name = tables.Column(
linkify=True
)
circuit_count = tables.Column(
accessor=Accessor('count_circuits'),
verbose_name='Circuits'
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='circuits:provider_list'
)
class Meta(NetBoxTable.Meta):
model = Provider
fields = (
'pk', 'id', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count',
'comments', 'tags', 'created', 'last_updated',
)
default_columns = ('pk', 'name', 'asn', 'account', 'circuit_count')
#
# Provider networks
#
class ProviderNetworkTable(NetBoxTable):
name = tables.Column(
linkify=True
)
provider = tables.Column(
linkify=True
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='circuits:providernetwork_list'
)
class Meta(NetBoxTable.Meta):
model = ProviderNetwork
fields = (
'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags',
)
default_columns = ('pk', 'name', 'provider', 'service_id', 'description')
#
# Circuit types
#
class CircuitTypeTable(NetBoxTable):
name = tables.Column(
linkify=True
@ -116,10 +39,6 @@ class CircuitTypeTable(NetBoxTable):
default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug')
#
# Circuits
#
class CircuitTable(NetBoxTable):
cid = tables.Column(
linkify=True,

View File

@ -0,0 +1,21 @@
import django_tables2 as tables
__all__ = (
'CommitRateColumn',
)
class CommitRateColumn(tables.TemplateColumn):
"""
Humanize the commit rate in the column view
"""
template_code = """
{% load helpers %}
{{ record.commit_rate|humanize_speed }}
"""
def __init__(self, *args, **kwargs):
super().__init__(template_code=self.template_code, *args, **kwargs)
def value(self, value):
return str(value) if value else None

View File

@ -0,0 +1,52 @@
import django_tables2 as tables
from django_tables2.utils import Accessor
from circuits.models import *
from netbox.tables import NetBoxTable, columns
__all__ = (
'ProviderTable',
'ProviderNetworkTable',
)
class ProviderTable(NetBoxTable):
name = tables.Column(
linkify=True
)
circuit_count = tables.Column(
accessor=Accessor('count_circuits'),
verbose_name='Circuits'
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='circuits:provider_list'
)
class Meta(NetBoxTable.Meta):
model = Provider
fields = (
'pk', 'id', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count',
'comments', 'tags', 'created', 'last_updated',
)
default_columns = ('pk', 'name', 'asn', 'account', 'circuit_count')
class ProviderNetworkTable(NetBoxTable):
name = tables.Column(
linkify=True
)
provider = tables.Column(
linkify=True
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='circuits:providernetwork_list'
)
class Meta(NetBoxTable.Meta):
model = ProviderNetwork
fields = (
'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags',
)
default_columns = ('pk', 'name', 'provider', 'service_id', 'description')

View File

@ -1,5 +1,4 @@
import django_tables2 as tables
from django_tables2.utils import Accessor
from dcim.models import (
ConsolePortTemplate, ConsoleServerPortTemplate, DeviceBayTemplate, DeviceType, FrontPortTemplate, InterfaceTemplate,

View File

@ -0,0 +1 @@
from .tables import *

View File

@ -1,8 +1,9 @@
import django_tables2 as tables
from django.conf import settings
from extras.models import *
from netbox.tables import NetBoxTable, columns
from .models import *
from .template_code import *
__all__ = (
'ConfigContextTable',
@ -17,32 +18,6 @@ __all__ = (
'WebhookTable',
)
CONFIGCONTEXT_ACTIONS = """
{% if perms.extras.change_configcontext %}
<a href="{% url 'extras:configcontext_edit' pk=record.pk %}" class="btn btn-sm btn-warning"><i class="mdi mdi-pencil" aria-hidden="true"></i></a>
{% endif %}
{% if perms.extras.delete_configcontext %}
<a href="{% url 'extras:configcontext_delete' pk=record.pk %}" class="btn btn-sm btn-danger"><i class="mdi mdi-trash-can-outline" aria-hidden="true"></i></a>
{% endif %}
"""
OBJECTCHANGE_FULL_NAME = """
{% load helpers %}
{{ record.user.get_full_name|placeholder }}
"""
OBJECTCHANGE_OBJECT = """
{% if record.changed_object and record.changed_object.get_absolute_url %}
<a href="{{ record.changed_object.get_absolute_url }}">{{ record.object_repr }}</a>
{% else %}
{{ record.object_repr }}
{% endif %}
"""
OBJECTCHANGE_REQUEST_ID = """
<a href="{% url 'extras:objectchange_list' %}?request_id={{ value }}">{{ value }}</a>
"""
#
# Custom fields

View File

@ -0,0 +1,25 @@
CONFIGCONTEXT_ACTIONS = """
{% if perms.extras.change_configcontext %}
<a href="{% url 'extras:configcontext_edit' pk=record.pk %}" class="btn btn-sm btn-warning"><i class="mdi mdi-pencil" aria-hidden="true"></i></a>
{% endif %}
{% if perms.extras.delete_configcontext %}
<a href="{% url 'extras:configcontext_delete' pk=record.pk %}" class="btn btn-sm btn-danger"><i class="mdi mdi-trash-can-outline" aria-hidden="true"></i></a>
{% endif %}
"""
OBJECTCHANGE_FULL_NAME = """
{% load helpers %}
{{ record.user.get_full_name|placeholder }}
"""
OBJECTCHANGE_OBJECT = """
{% if record.changed_object and record.changed_object.get_absolute_url %}
<a href="{{ record.changed_object.get_absolute_url }}">{{ record.object_repr }}</a>
{% else %}
{{ record.object_repr }}
{% endif %}
"""
OBJECTCHANGE_REQUEST_ID = """
<a href="{% url 'extras:objectchange_list' %}?request_id={{ value }}">{{ value }}</a>
"""

View File

@ -0,0 +1,3 @@
from .columns import *
from .contacts import *
from .tenants import *

View File

@ -0,0 +1,26 @@
import django_tables2 as tables
__all__ = (
'TenantColumn',
)
class TenantColumn(tables.TemplateColumn):
"""
Include the tenant description.
"""
template_code = """
{% if record.tenant %}
<a href="{{ record.tenant.get_absolute_url }}" title="{{ record.tenant.description }}">{{ record.tenant }}</a>
{% elif record.vrf.tenant %}
<a href="{{ record.vrf.tenant.get_absolute_url }}" title="{{ record.vrf.tenant.description }}">{{ record.vrf.tenant }}</a>*
{% else %}
&mdash;
{% endif %}
"""
def __init__(self, *args, **kwargs):
super().__init__(template_code=self.template_code, *args, **kwargs)
def value(self, value):
return str(value) if value else None

View File

@ -1,92 +1,17 @@
import django_tables2 as tables
from netbox.tables import NetBoxTable, columns
from tenancy.models import *
from utilities.tables import linkify_phone
from .models import *
__all__ = (
'ContactAssignmentTable',
'ContactGroupTable',
'ContactRoleTable',
'ContactTable',
'TenantColumn',
'TenantGroupTable',
'TenantTable',
)
#
# Table columns
#
class TenantColumn(tables.TemplateColumn):
"""
Include the tenant description.
"""
template_code = """
{% if record.tenant %}
<a href="{{ record.tenant.get_absolute_url }}" title="{{ record.tenant.description }}">{{ record.tenant }}</a>
{% elif record.vrf.tenant %}
<a href="{{ record.vrf.tenant.get_absolute_url }}" title="{{ record.vrf.tenant.description }}">{{ record.vrf.tenant }}</a>*
{% else %}
&mdash;
{% endif %}
"""
def __init__(self, *args, **kwargs):
super().__init__(template_code=self.template_code, *args, **kwargs)
def value(self, value):
return str(value) if value else None
#
# Tenants
#
class TenantGroupTable(NetBoxTable):
name = columns.MPTTColumn(
linkify=True
)
tenant_count = columns.LinkedCountColumn(
viewname='tenancy:tenant_list',
url_params={'group_id': 'pk'},
verbose_name='Tenants'
)
tags = columns.TagColumn(
url_name='tenancy:tenantgroup_list'
)
class Meta(NetBoxTable.Meta):
model = TenantGroup
fields = (
'pk', 'id', 'name', 'tenant_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
)
default_columns = ('pk', 'name', 'tenant_count', 'description')
class TenantTable(NetBoxTable):
name = tables.Column(
linkify=True
)
group = tables.Column(
linkify=True
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='tenancy:tenant_list'
)
class Meta(NetBoxTable.Meta):
model = Tenant
fields = ('pk', 'id', 'name', 'slug', 'group', 'description', 'comments', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'group', 'description')
#
# Contacts
#
class ContactGroupTable(NetBoxTable):
name = columns.MPTTColumn(
linkify=True

View File

@ -0,0 +1,48 @@
import django_tables2 as tables
from netbox.tables import NetBoxTable, columns
from tenancy.models import *
__all__ = (
'TenantGroupTable',
'TenantTable',
)
class TenantGroupTable(NetBoxTable):
name = columns.MPTTColumn(
linkify=True
)
tenant_count = columns.LinkedCountColumn(
viewname='tenancy:tenant_list',
url_params={'group_id': 'pk'},
verbose_name='Tenants'
)
tags = columns.TagColumn(
url_name='tenancy:tenantgroup_list'
)
class Meta(NetBoxTable.Meta):
model = TenantGroup
fields = (
'pk', 'id', 'name', 'tenant_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
)
default_columns = ('pk', 'name', 'tenant_count', 'description')
class TenantTable(NetBoxTable):
name = tables.Column(
linkify=True
)
group = tables.Column(
linkify=True
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='tenancy:tenant_list'
)
class Meta(NetBoxTable.Meta):
model = Tenant
fields = ('pk', 'id', 'name', 'slug', 'group', 'description', 'comments', 'tags', 'created', 'last_updated',)
default_columns = ('pk', 'name', 'group', 'description')

View File

@ -0,0 +1,2 @@
from .clusters import *
from .virtualmachines import *

View File

@ -0,0 +1,88 @@
import django_tables2 as tables
from netbox.tables import NetBoxTable, columns
from virtualization.models import Cluster, ClusterGroup, ClusterType
__all__ = (
'ClusterTable',
'ClusterGroupTable',
'ClusterTypeTable',
)
class ClusterTypeTable(NetBoxTable):
name = tables.Column(
linkify=True
)
cluster_count = tables.Column(
verbose_name='Clusters'
)
tags = columns.TagColumn(
url_name='virtualization:clustertype_list'
)
class Meta(NetBoxTable.Meta):
model = ClusterType
fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'created', 'last_updated', 'tags', 'actions',
)
default_columns = ('pk', 'name', 'cluster_count', 'description')
class ClusterGroupTable(NetBoxTable):
name = tables.Column(
linkify=True
)
cluster_count = tables.Column(
verbose_name='Clusters'
)
tags = columns.TagColumn(
url_name='virtualization:clustergroup_list'
)
class Meta(NetBoxTable.Meta):
model = ClusterGroup
fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'created', 'last_updated', 'actions',
)
default_columns = ('pk', 'name', 'cluster_count', 'description')
class ClusterTable(NetBoxTable):
name = tables.Column(
linkify=True
)
type = tables.Column(
linkify=True
)
group = tables.Column(
linkify=True
)
tenant = tables.Column(
linkify=True
)
site = tables.Column(
linkify=True
)
device_count = columns.LinkedCountColumn(
viewname='dcim:device_list',
url_params={'cluster_id': 'pk'},
verbose_name='Devices'
)
vm_count = columns.LinkedCountColumn(
viewname='virtualization:virtualmachine_list',
url_params={'cluster_id': 'pk'},
verbose_name='VMs'
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='virtualization:cluster_list'
)
class Meta(NetBoxTable.Meta):
model = Cluster
fields = (
'pk', 'id', 'name', 'type', 'group', 'tenant', 'site', 'comments', 'device_count', 'vm_count', 'tags',
'created', 'last_updated',
)
default_columns = ('pk', 'name', 'type', 'group', 'tenant', 'site', 'device_count', 'vm_count')

View File

@ -3,12 +3,9 @@ import django_tables2 as tables
from dcim.tables.devices import BaseInterfaceTable
from netbox.tables import NetBoxTable, columns
from tenancy.tables import TenantColumn
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
from virtualization.models import VirtualMachine, VMInterface
__all__ = (
'ClusterTable',
'ClusterGroupTable',
'ClusterTypeTable',
'VirtualMachineTable',
'VirtualMachineVMInterfaceTable',
'VMInterfaceTable',
@ -23,96 +20,6 @@ VMINTERFACE_BUTTONS = """
"""
#
# Cluster types
#
class ClusterTypeTable(NetBoxTable):
name = tables.Column(
linkify=True
)
cluster_count = tables.Column(
verbose_name='Clusters'
)
tags = columns.TagColumn(
url_name='virtualization:clustertype_list'
)
class Meta(NetBoxTable.Meta):
model = ClusterType
fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'created', 'last_updated', 'tags', 'actions',
)
default_columns = ('pk', 'name', 'cluster_count', 'description')
#
# Cluster groups
#
class ClusterGroupTable(NetBoxTable):
name = tables.Column(
linkify=True
)
cluster_count = tables.Column(
verbose_name='Clusters'
)
tags = columns.TagColumn(
url_name='virtualization:clustergroup_list'
)
class Meta(NetBoxTable.Meta):
model = ClusterGroup
fields = (
'pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'created', 'last_updated', 'actions',
)
default_columns = ('pk', 'name', 'cluster_count', 'description')
#
# Clusters
#
class ClusterTable(NetBoxTable):
name = tables.Column(
linkify=True
)
type = tables.Column(
linkify=True
)
group = tables.Column(
linkify=True
)
tenant = tables.Column(
linkify=True
)
site = tables.Column(
linkify=True
)
device_count = columns.LinkedCountColumn(
viewname='dcim:device_list',
url_params={'cluster_id': 'pk'},
verbose_name='Devices'
)
vm_count = columns.LinkedCountColumn(
viewname='virtualization:virtualmachine_list',
url_params={'cluster_id': 'pk'},
verbose_name='VMs'
)
comments = columns.MarkdownColumn()
tags = columns.TagColumn(
url_name='virtualization:cluster_list'
)
class Meta(NetBoxTable.Meta):
model = Cluster
fields = (
'pk', 'id', 'name', 'type', 'group', 'tenant', 'site', 'comments', 'device_count', 'vm_count', 'tags',
'created', 'last_updated',
)
default_columns = ('pk', 'name', 'type', 'group', 'tenant', 'site', 'device_count', 'vm_count')
#
# Virtual machines
#

View File

@ -0,0 +1,2 @@
from .wirelesslan import *
from .wirelesslink import *

View File

@ -2,12 +2,12 @@ import django_tables2 as tables
from dcim.models import Interface
from netbox.tables import NetBoxTable, columns
from .models import *
from wireless.models import *
__all__ = (
'WirelessLANTable',
'WirelessLANGroupTable',
'WirelessLinkTable',
'WirelessLANInterfacesTable',
'WirelessLANTable',
)
@ -67,39 +67,3 @@ class WirelessLANInterfacesTable(NetBoxTable):
model = Interface
fields = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
default_columns = ('pk', 'device', 'name', 'rf_role', 'rf_channel')
class WirelessLinkTable(NetBoxTable):
id = tables.Column(
linkify=True,
verbose_name='ID'
)
status = columns.ChoiceFieldColumn()
device_a = tables.Column(
accessor=tables.A('interface_a__device'),
linkify=True
)
interface_a = tables.Column(
linkify=True
)
device_b = tables.Column(
accessor=tables.A('interface_b__device'),
linkify=True
)
interface_b = tables.Column(
linkify=True
)
tags = columns.TagColumn(
url_name='wireless:wirelesslink_list'
)
class Meta(NetBoxTable.Meta):
model = WirelessLink
fields = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description',
'auth_type', 'auth_cipher', 'auth_psk', 'tags', 'created', 'last_updated',
)
default_columns = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'auth_type',
'description',
)

View File

@ -0,0 +1,44 @@
import django_tables2 as tables
from netbox.tables import NetBoxTable, columns
from wireless.models import *
__all__ = (
'WirelessLinkTable',
)
class WirelessLinkTable(NetBoxTable):
id = tables.Column(
linkify=True,
verbose_name='ID'
)
status = columns.ChoiceFieldColumn()
device_a = tables.Column(
accessor=tables.A('interface_a__device'),
linkify=True
)
interface_a = tables.Column(
linkify=True
)
device_b = tables.Column(
accessor=tables.A('interface_b__device'),
linkify=True
)
interface_b = tables.Column(
linkify=True
)
tags = columns.TagColumn(
url_name='wireless:wirelesslink_list'
)
class Meta(NetBoxTable.Meta):
model = WirelessLink
fields = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'description',
'auth_type', 'auth_cipher', 'auth_psk', 'tags', 'created', 'last_updated',
)
default_columns = (
'pk', 'id', 'status', 'device_a', 'interface_a', 'device_b', 'interface_b', 'ssid', 'auth_type',
'description',
)