Просмотр исходного кода

Closes #5998: Introduce ContentTypeColumn

Jeremy Stretch 5 лет назад
Родитель
Сommit
889316085c
3 измененных файлов с 19 добавлено и 5 удалено
  1. 5 3
      netbox/extras/tables.py
  2. 3 2
      netbox/ipam/tables.py
  3. 11 0
      netbox/utilities/tables.py

+ 5 - 3
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(

+ 3 - 2
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
     )

+ 11 - 0
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).