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

Always include actions as a default column

This commit is contained in:
jeremystretch
2022-01-07 10:36:58 -05:00
parent 00a8fd654e
commit 6d48ce4a25
13 changed files with 52 additions and 82 deletions

View File

@ -2,7 +2,7 @@ import django_tables2 as tables
from django_tables2.utils import Accessor
from tenancy.tables import TenantColumn
from utilities.tables import ActionsColumn, BaseTable, ChoiceFieldColumn, MarkdownColumn, TagColumn, ToggleColumn
from utilities.tables import BaseTable, ChoiceFieldColumn, MarkdownColumn, TagColumn, ToggleColumn
from .models import *
@ -88,12 +88,11 @@ class CircuitTypeTable(BaseTable):
circuit_count = tables.Column(
verbose_name='Circuits'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = CircuitType
fields = ('pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'actions')
default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions')
default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug')
#

View File

@ -94,7 +94,6 @@ class DeviceRoleTable(BaseTable):
tags = TagColumn(
url_name='dcim:devicerole_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = DeviceRole
@ -102,7 +101,7 @@ class DeviceRoleTable(BaseTable):
'pk', 'id', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'slug', 'tags',
'actions',
)
default_columns = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description', 'actions')
default_columns = ('pk', 'name', 'device_count', 'vm_count', 'color', 'vm_role', 'description')
#
@ -127,7 +126,6 @@ class PlatformTable(BaseTable):
tags = TagColumn(
url_name='dcim:platform_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = Platform
@ -136,7 +134,7 @@ class PlatformTable(BaseTable):
'description', 'tags', 'actions',
)
default_columns = (
'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'napalm_driver', 'description', 'actions',
'pk', 'name', 'manufacturer', 'device_count', 'vm_count', 'napalm_driver', 'description',
)
@ -336,7 +334,7 @@ class DeviceConsolePortTable(ConsolePortTable):
'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected',
'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions'
)
default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection', 'actions')
default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection')
row_attrs = {
'class': get_cabletermination_row_class
}
@ -381,7 +379,7 @@ class DeviceConsoleServerPortTable(ConsoleServerPortTable):
'pk', 'id', 'name', 'module_bay', 'module', 'label', 'type', 'speed', 'description', 'mark_connected',
'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions',
)
default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection', 'actions')
default_columns = ('pk', 'name', 'label', 'type', 'speed', 'description', 'cable', 'connection')
row_attrs = {
'class': get_cabletermination_row_class
}
@ -428,7 +426,6 @@ class DevicePowerPortTable(PowerPortTable):
)
default_columns = (
'pk', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description', 'cable', 'connection',
'actions',
)
row_attrs = {
'class': get_cabletermination_row_class
@ -477,7 +474,7 @@ class DevicePowerOutletTable(PowerOutletTable):
'mark_connected', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'actions',
)
default_columns = (
'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'cable', 'connection', 'actions',
'pk', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description', 'cable', 'connection',
)
row_attrs = {
'class': get_cabletermination_row_class
@ -572,7 +569,7 @@ class DeviceInterfaceTable(InterfaceTable):
order_by = ('name',)
default_columns = (
'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mtu', 'mode', 'description', 'ip_addresses',
'cable', 'connection', 'actions',
'cable', 'connection',
)
row_attrs = {
'class': get_interface_row_class,
@ -631,7 +628,6 @@ class DeviceFrontPortTable(FrontPortTable):
)
default_columns = (
'pk', 'name', 'label', 'type', 'rear_port', 'rear_port_position', 'description', 'cable', 'link_peer',
'actions',
)
row_attrs = {
'class': get_cabletermination_row_class
@ -679,7 +675,7 @@ class DeviceRearPortTable(RearPortTable):
'cable', 'cable_color', 'link_peer', 'tags', 'actions',
)
default_columns = (
'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'link_peer', 'actions',
'pk', 'name', 'label', 'type', 'positions', 'description', 'cable', 'link_peer',
)
row_attrs = {
'class': get_cabletermination_row_class
@ -728,9 +724,7 @@ class DeviceDeviceBayTable(DeviceBayTable):
fields = (
'pk', 'id', 'name', 'label', 'status', 'installed_device', 'description', 'tags', 'actions',
)
default_columns = (
'pk', 'name', 'label', 'status', 'installed_device', 'description', 'actions',
)
default_columns = ('pk', 'name', 'label', 'status', 'installed_device', 'description')
class ModuleBayTable(DeviceComponentTable):
@ -764,7 +758,7 @@ class DeviceModuleBayTable(ModuleBayTable):
class Meta(DeviceComponentTable.Meta):
model = ModuleBay
fields = ('pk', 'id', 'name', 'label', 'description', 'installed_module', 'tags', 'actions')
default_columns = ('pk', 'name', 'label', 'description', 'installed_module', 'actions')
default_columns = ('pk', 'name', 'label', 'description', 'installed_module')
class InventoryItemTable(DeviceComponentTable):
@ -821,7 +815,7 @@ class DeviceInventoryItemTable(InventoryItemTable):
'description', 'discovered', 'tags', 'actions',
)
default_columns = (
'pk', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'component', 'actions',
'pk', 'name', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'component',
)
@ -839,14 +833,13 @@ class InventoryItemRoleTable(BaseTable):
tags = TagColumn(
url_name='dcim:inventoryitemrole_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = InventoryItemRole
fields = (
'pk', 'id', 'name', 'inventoryitem_count', 'color', 'description', 'slug', 'tags', 'actions',
)
default_columns = ('pk', 'name', 'inventoryitem_count', 'color', 'description', 'actions')
default_columns = ('pk', 'name', 'inventoryitem_count', 'color', 'description')
#

View File

@ -49,7 +49,6 @@ class ManufacturerTable(BaseTable):
tags = TagColumn(
url_name='dcim:manufacturer_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = Manufacturer
@ -58,7 +57,7 @@ class ManufacturerTable(BaseTable):
'actions',
)
default_columns = (
'pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug', 'actions',
'pk', 'name', 'devicetype_count', 'inventoryitem_count', 'platform_count', 'description', 'slug',
)

View File

@ -4,8 +4,8 @@ from django_tables2.utils import Accessor
from dcim.models import Rack, RackReservation, RackRole
from tenancy.tables import TenantColumn
from utilities.tables import (
ActionsColumn, BaseTable, ChoiceFieldColumn, ColorColumn, ColoredLabelColumn, LinkedCountColumn, MarkdownColumn,
TagColumn, ToggleColumn, UtilizationColumn,
BaseTable, ChoiceFieldColumn, ColorColumn, ColoredLabelColumn, LinkedCountColumn, MarkdownColumn, TagColumn,
ToggleColumn, UtilizationColumn,
)
__all__ = (
@ -27,12 +27,11 @@ class RackRoleTable(BaseTable):
tags = TagColumn(
url_name='dcim:rackrole_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = RackRole
fields = ('pk', 'id', 'name', 'rack_count', 'color', 'description', 'slug', 'tags', 'actions')
default_columns = ('pk', 'name', 'rack_count', 'color', 'description', 'actions')
default_columns = ('pk', 'name', 'rack_count', 'color', 'description')
#
@ -121,7 +120,6 @@ class RackReservationTable(BaseTable):
tags = TagColumn(
url_name='dcim:rackreservation_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = RackReservation
@ -129,6 +127,4 @@ class RackReservationTable(BaseTable):
'pk', 'id', 'reservation', 'site', 'rack', 'unit_list', 'user', 'created', 'tenant', 'description', 'tags',
'actions',
)
default_columns = (
'pk', 'reservation', 'site', 'rack', 'unit_list', 'user', 'description', 'actions',
)
default_columns = ('pk', 'reservation', 'site', 'rack', 'unit_list', 'user', 'description')

View File

@ -3,8 +3,7 @@ import django_tables2 as tables
from dcim.models import Location, Region, Site, SiteGroup
from tenancy.tables import TenantColumn
from utilities.tables import (
ActionsColumn, BaseTable, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn,
TagColumn, ToggleColumn,
BaseTable, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, MarkdownColumn, MPTTColumn, TagColumn, ToggleColumn,
)
from .template_code import LOCATION_ELEVATIONS
@ -33,12 +32,11 @@ class RegionTable(BaseTable):
tags = TagColumn(
url_name='dcim:region_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = Region
fields = ('pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'actions')
default_columns = ('pk', 'name', 'site_count', 'description', 'actions')
default_columns = ('pk', 'name', 'site_count', 'description')
#
@ -58,12 +56,11 @@ class SiteGroupTable(BaseTable):
tags = TagColumn(
url_name='dcim:sitegroup_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = SiteGroup
fields = ('pk', 'id', 'name', 'slug', 'site_count', 'description', 'tags', 'actions')
default_columns = ('pk', 'name', 'site_count', 'description', 'actions')
default_columns = ('pk', 'name', 'site_count', 'description')
#
@ -99,6 +96,7 @@ class SiteTable(BaseTable):
fields = (
'pk', 'id', 'name', 'slug', 'status', 'facility', 'region', 'group', 'tenant', 'asn_count', 'time_zone',
'description', 'physical_address', 'shipping_address', 'latitude', 'longitude', 'comments', 'tags',
'actions',
)
default_columns = ('pk', 'name', 'status', 'facility', 'region', 'group', 'tenant', 'description')
@ -140,4 +138,4 @@ class LocationTable(BaseTable):
'pk', 'id', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'slug', 'tags',
'actions',
)
default_columns = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description', 'actions')
default_columns = ('pk', 'name', 'site', 'tenant', 'rack_count', 'device_count', 'description')

View File

@ -152,12 +152,11 @@ class TagTable(BaseTable):
linkify=True
)
color = ColorColumn()
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = Tag
fields = ('pk', 'id', 'name', 'items', 'slug', 'color', 'description', 'actions')
default_columns = ('pk', 'name', 'items', 'slug', 'color', 'description', 'actions')
default_columns = ('pk', 'name', 'items', 'slug', 'color', 'description')
class TaggedItemTable(BaseTable):
@ -215,6 +214,7 @@ class ObjectChangeTable(BaseTable):
template_code=OBJECTCHANGE_REQUEST_ID,
verbose_name='Request ID'
)
actions = ActionsColumn(actions=())
class Meta(BaseTable.Meta):
model = ObjectChange
@ -233,7 +233,6 @@ class ObjectJournalTable(BaseTable):
comments = tables.TemplateColumn(
template_code='{% load helpers %}{{ value|render_markdown|truncatewords_html:50 }}'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = JournalEntry
@ -259,6 +258,5 @@ class JournalEntryTable(ObjectJournalTable):
'comments', 'actions'
)
default_columns = (
'pk', 'created', 'created_by', 'assigned_object_type', 'assigned_object', 'kind',
'comments', 'actions'
'pk', 'created', 'created_by', 'assigned_object_type', 'assigned_object', 'kind', 'comments'
)

View File

@ -2,12 +2,11 @@ import django_tables2 as tables
from django.utils.safestring import mark_safe
from django_tables2.utils import Accessor
from ipam.models import *
from tenancy.tables import TenantColumn
from utilities.tables import (
ActionsColumn, BaseTable, BooleanColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn,
UtilizationColumn,
BaseTable, BooleanColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn, UtilizationColumn,
)
from ipam.models import *
__all__ = (
'AggregateTable',
@ -89,12 +88,11 @@ class RIRTable(BaseTable):
tags = TagColumn(
url_name='ipam:rir_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = RIR
fields = ('pk', 'id', 'name', 'slug', 'is_private', 'aggregate_count', 'description', 'tags', 'actions')
default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description', 'actions')
default_columns = ('pk', 'name', 'is_private', 'aggregate_count', 'description')
#
@ -111,12 +109,11 @@ class ASNTable(BaseTable):
url_params={'asn_id': 'pk'},
verbose_name='Sites'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = ASN
fields = ('pk', 'asn', 'rir', 'site_count', 'tenant', 'description', 'actions')
default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant', 'actions')
default_columns = ('pk', 'asn', 'rir', 'site_count', 'sites', 'tenant')
#
@ -173,12 +170,11 @@ class RoleTable(BaseTable):
tags = TagColumn(
url_name='ipam:role_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = Role
fields = ('pk', 'id', 'name', 'slug', 'prefix_count', 'vlan_count', 'description', 'weight', 'tags', 'actions')
default_columns = ('pk', 'name', 'prefix_count', 'vlan_count', 'description', 'actions')
default_columns = ('pk', 'name', 'prefix_count', 'vlan_count', 'description')
#
@ -405,7 +401,6 @@ class AssignedIPAddressesTable(BaseTable):
)
status = ChoiceFieldColumn()
tenant = TenantColumn()
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = IPAddress

View File

@ -88,7 +88,7 @@ class VLANGroupTable(BaseTable):
'pk', 'id', 'name', 'scope_type', 'scope', 'min_vid', 'max_vid', 'vlan_count', 'slug', 'description',
'tags', 'actions',
)
default_columns = ('pk', 'name', 'scope_type', 'scope', 'vlan_count', 'description', 'actions')
default_columns = ('pk', 'name', 'scope_type', 'scope', 'vlan_count', 'description')
#

View File

@ -59,12 +59,11 @@ class TenantGroupTable(BaseTable):
tags = TagColumn(
url_name='tenancy:tenantgroup_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = TenantGroup
fields = ('pk', 'id', 'name', 'tenant_count', 'description', 'slug', 'tags', 'actions')
default_columns = ('pk', 'name', 'tenant_count', 'description', 'actions')
default_columns = ('pk', 'name', 'tenant_count', 'description')
class TenantTable(BaseTable):
@ -103,12 +102,11 @@ class ContactGroupTable(BaseTable):
tags = TagColumn(
url_name='tenancy:contactgroup_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = ContactGroup
fields = ('pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'actions')
default_columns = ('pk', 'name', 'contact_count', 'description', 'actions')
default_columns = ('pk', 'name', 'contact_count', 'description')
class ContactRoleTable(BaseTable):
@ -116,12 +114,11 @@ class ContactRoleTable(BaseTable):
name = tables.Column(
linkify=True
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = ContactRole
fields = ('pk', 'name', 'description', 'slug', 'actions')
default_columns = ('pk', 'name', 'description', 'actions')
default_columns = ('pk', 'name', 'description')
class ContactTable(BaseTable):
@ -171,4 +168,4 @@ class ContactAssignmentTable(BaseTable):
class Meta(BaseTable.Meta):
model = ContactAssignment
fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions')
default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions')
default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority')

View File

@ -114,7 +114,8 @@ class ActionsColumn(tables.Column):
return ''
def render(self, record, table, **kwargs):
if not self.actions:
# Skip dummy records (e.g. available VLANs) or those with no actions
if not hasattr(record, 'pk') or not self.actions:
return ''
model = table.Meta.model

View File

@ -24,6 +24,7 @@ class BaseTable(tables.Table):
linkify=True,
verbose_name='ID'
)
actions = columns.ActionsColumn()
class Meta:
attrs = {
@ -50,12 +51,11 @@ class BaseTable(tables.Table):
if self.empty_text is None:
self.empty_text = f"No {self._meta.model._meta.verbose_name_plural} found"
# Hide non-default columns
default_columns = getattr(self.Meta, 'default_columns', list())
if default_columns:
for column in self.columns:
if column.name not in default_columns:
self.columns.hide(column.name)
# Hide non-default columns (except for actions)
default_columns = [*getattr(self.Meta, 'default_columns', self.Meta.fields), 'actions']
for column in self.columns:
if column.name not in default_columns:
self.columns.hide(column.name)
# Apply custom column ordering for user
if user is not None and not isinstance(user, AnonymousUser):

View File

@ -1,9 +1,10 @@
import django_tables2 as tables
from dcim.tables.devices import BaseInterfaceTable
from tenancy.tables import TenantColumn
from utilities.tables import (
ActionsColumn, BaseTable, ButtonsColumn, ChoiceFieldColumn, ColoredLabelColumn, LinkedCountColumn, MarkdownColumn,
TagColumn, ToggleColumn,
BaseTable, ButtonsColumn, ChoiceFieldColumn, ColoredLabelColumn, LinkedCountColumn, MarkdownColumn, TagColumn,
ToggleColumn,
)
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
@ -40,12 +41,11 @@ class ClusterTypeTable(BaseTable):
tags = TagColumn(
url_name='virtualization:clustertype_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = ClusterType
fields = ('pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'actions')
default_columns = ('pk', 'name', 'cluster_count', 'description', 'actions')
default_columns = ('pk', 'name', 'cluster_count', 'description')
#
@ -63,12 +63,11 @@ class ClusterGroupTable(BaseTable):
tags = TagColumn(
url_name='virtualization:clustergroup_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = ClusterGroup
fields = ('pk', 'id', 'name', 'slug', 'cluster_count', 'description', 'tags', 'actions')
default_columns = ('pk', 'name', 'cluster_count', 'description', 'actions')
default_columns = ('pk', 'name', 'cluster_count', 'description')
#
@ -196,9 +195,7 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable):
'pk', 'id', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags',
'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions',
)
default_columns = (
'pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses', 'actions',
)
default_columns = ('pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses')
row_attrs = {
'data-name': lambda record: record.name,
}

View File

@ -1,9 +1,7 @@
import django_tables2 as tables
from dcim.models import Interface
from utilities.tables import (
ActionsColumn, BaseTable, ChoiceFieldColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn,
)
from utilities.tables import BaseTable, ChoiceFieldColumn, LinkedCountColumn, MPTTColumn, TagColumn, ToggleColumn
from .models import *
__all__ = (
@ -26,12 +24,11 @@ class WirelessLANGroupTable(BaseTable):
tags = TagColumn(
url_name='wireless:wirelesslangroup_list'
)
actions = ActionsColumn()
class Meta(BaseTable.Meta):
model = WirelessLANGroup
fields = ('pk', 'name', 'wirelesslan_count', 'description', 'slug', 'tags', 'actions')
default_columns = ('pk', 'name', 'wirelesslan_count', 'description', 'actions')
default_columns = ('pk', 'name', 'wirelesslan_count', 'description')
class WirelessLANTable(BaseTable):