From 889316085c19872c3a290ece3bd017e289506054 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 17 Mar 2021 16:29:43 -0400 Subject: [PATCH] Closes #5998: Introduce ContentTypeColumn --- netbox/extras/tables.py | 8 +++++--- netbox/ipam/tables.py | 5 +++-- netbox/utilities/tables.py | 11 +++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/netbox/extras/tables.py b/netbox/extras/tables.py index e034b915a..24648b952 100644 --- a/netbox/extras/tables.py +++ b/netbox/extras/tables.py @@ -1,7 +1,9 @@ import django_tables2 as tables from django.conf import settings -from utilities.tables import BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, ColorColumn, ToggleColumn +from utilities.tables import ( + BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, ColorColumn, ContentTypeColumn, ToggleColumn, +) from .models import ConfigContext, JournalEntry, ObjectChange, Tag, TaggedItem TAGGED_ITEM = """ @@ -81,7 +83,7 @@ class ObjectChangeTable(BaseTable): format=settings.SHORT_DATETIME_FORMAT ) action = ChoiceFieldColumn() - changed_object_type = tables.Column( + changed_object_type = ContentTypeColumn( verbose_name='Type' ) object_repr = tables.TemplateColumn( @@ -103,7 +105,7 @@ class JournalEntryTable(BaseTable): created = tables.DateTimeColumn( format=settings.SHORT_DATETIME_FORMAT ) - assigned_object_type = tables.Column( + assigned_object_type = ContentTypeColumn( verbose_name='Object type' ) assigned_object = tables.Column( diff --git a/netbox/ipam/tables.py b/netbox/ipam/tables.py index 7e618ad1c..24560a70d 100644 --- a/netbox/ipam/tables.py +++ b/netbox/ipam/tables.py @@ -5,8 +5,8 @@ from django_tables2.utils import Accessor from dcim.models import Interface from tenancy.tables import TenantColumn from utilities.tables import ( - BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn, - UtilizationColumn, + BaseTable, BooleanColumn, ButtonsColumn, ChoiceFieldColumn, ContentTypeColumn, LinkedCountColumn, TagColumn, + ToggleColumn, UtilizationColumn, ) from virtualization.models import VMInterface from .models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF @@ -417,6 +417,7 @@ class InterfaceIPAddressTable(BaseTable): class VLANGroupTable(BaseTable): pk = ToggleColumn() name = tables.Column(linkify=True) + scope_type = ContentTypeColumn() scope = tables.Column( linkify=True ) diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 424cc6cd9..e395a1803 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -212,6 +212,17 @@ class ChoiceFieldColumn(tables.Column): return value +class ContentTypeColumn(tables.Column): + """ + Display a ContentType instance. + """ + def render(self, value): + return value.name[0].upper() + value.name[1:] + + def value(self, value): + return f"{value.app_label}.{value.model}" + + class ColorColumn(tables.Column): """ Display a color (#RRGGBB).