Closes #5998: Introduce ContentTypeColumn

This commit is contained in:
Jeremy Stretch 2021-03-17 16:29:43 -04:00
parent 9a68a61ad3
commit 889316085c
3 changed files with 19 additions and 5 deletions

View File

@ -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(

View File

@ -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
)

View File

@ -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).