Platform |
@@ -178,7 +176,7 @@
Primary IPv4 |
{% if object.primary_ip4 %}
- {{ object.primary_ip4.address.ip }}
+ {{ object.primary_ip4.address.ip }}
{% if object.primary_ip4.nat_inside %}
(NAT for {{ object.primary_ip4.nat_inside.address.ip|linkify }})
{% elif object.primary_ip4.nat_outside %}
@@ -193,7 +191,7 @@
| Primary IPv6 |
{% if object.primary_ip6 %}
- {{ object.primary_ip6.address.ip }}
+ {{ object.primary_ip6.address.ip }}
{% if object.primary_ip6.nat_inside %}
(NAT for {{ object.primary_ip6.nat_inside.address.ip|linkify }})
{% elif object.primary_ip6.nat_outside %}
diff --git a/netbox/templates/extras/object_journal.html b/netbox/templates/extras/object_journal.html
index 363b067a8..0ed95d9eb 100644
--- a/netbox/templates/extras/object_journal.html
+++ b/netbox/templates/extras/object_journal.html
@@ -5,25 +5,29 @@
{% render_errors form %}
{% block content %}
- {% if perms.extras.add_journalentry %}
-
- {% endif %}
{% render_table table 'inc/table.html' %}
{% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}
+ {% if perms.extras.add_journalentry %}
+
+ {% endif %}
{% endblock %}
diff --git a/netbox/tenancy/tables/columns.py b/netbox/tenancy/tables/columns.py
index bb5aba5de..21622f18b 100644
--- a/netbox/tenancy/tables/columns.py
+++ b/netbox/tenancy/tables/columns.py
@@ -2,6 +2,8 @@ import django_tables2 as tables
__all__ = (
'TenantColumn',
+ 'TenantGroupColumn',
+ 'TenancyColumnsMixin',
)
@@ -24,3 +26,32 @@ class TenantColumn(tables.TemplateColumn):
def value(self, value):
return str(value) if value else None
+
+
+class TenantGroupColumn(tables.TemplateColumn):
+ """
+ Include the tenant group description.
+ """
+ template_code = """
+ {% if record.tenant and record.tenant.group %}
+ {{ record.tenant.group }}
+ {% elif record.vrf.tenant and record.vrf.tenant.group %}
+ {{ record.vrf.tenant.group }}*
+ {% else %}
+ —
+ {% endif %}
+ """
+
+ def __init__(self, accessor=tables.A('tenant__group'), *args, **kwargs):
+ if 'verbose_name' not in kwargs:
+ kwargs['verbose_name'] = 'Tenant Group'
+
+ super().__init__(template_code=self.template_code, accessor=accessor, *args, **kwargs)
+
+ def value(self, value):
+ return str(value) if value else None
+
+
+class TenancyColumnsMixin(tables.Table):
+ tenant_group = TenantGroupColumn()
+ tenant = TenantColumn()
diff --git a/netbox/virtualization/tables/clusters.py b/netbox/virtualization/tables/clusters.py
index dfcae052a..ba0f2d301 100644
--- a/netbox/virtualization/tables/clusters.py
+++ b/netbox/virtualization/tables/clusters.py
@@ -1,6 +1,7 @@
import django_tables2 as tables
from netbox.tables import NetBoxTable, columns
+from tenancy.tables import TenancyColumnsMixin
from virtualization.models import Cluster, ClusterGroup, ClusterType
__all__ = (
@@ -56,7 +57,7 @@ class ClusterGroupTable(NetBoxTable):
default_columns = ('pk', 'name', 'cluster_count', 'description')
-class ClusterTable(NetBoxTable):
+class ClusterTable(TenancyColumnsMixin, NetBoxTable):
name = tables.Column(
linkify=True
)
@@ -66,10 +67,6 @@ class ClusterTable(NetBoxTable):
group = tables.Column(
linkify=True
)
- status = columns.ChoiceFieldColumn()
- tenant = tables.Column(
- linkify=True
- )
site = tables.Column(
linkify=True
)
@@ -94,7 +91,7 @@ class ClusterTable(NetBoxTable):
class Meta(NetBoxTable.Meta):
model = Cluster
fields = (
- 'pk', 'id', 'name', 'type', 'group', 'status', 'tenant', 'site', 'comments', 'device_count', 'vm_count',
- 'contacts', 'tags', 'created', 'last_updated',
+ 'pk', 'id', 'name', 'type', 'group', 'status', 'tenant', 'tenant_group', 'site', 'comments', 'device_count',
+ 'vm_count', 'contacts', 'tags', 'created', 'last_updated',
)
default_columns = ('pk', 'name', 'type', 'group', 'status', 'tenant', 'site', 'device_count', 'vm_count')
diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py
index 0fe2571b1..e0988bba0 100644
--- a/netbox/virtualization/tables/virtualmachines.py
+++ b/netbox/virtualization/tables/virtualmachines.py
@@ -2,7 +2,7 @@ import django_tables2 as tables
from dcim.tables.devices import BaseInterfaceTable
from netbox.tables import NetBoxTable, columns
-from tenancy.tables import TenantColumn
+from tenancy.tables import TenancyColumnsMixin
from virtualization.models import VirtualMachine, VMInterface
__all__ = (
@@ -24,7 +24,7 @@ VMINTERFACE_BUTTONS = """
# Virtual machines
#
-class VirtualMachineTable(NetBoxTable):
+class VirtualMachineTable(TenancyColumnsMixin, NetBoxTable):
name = tables.Column(
order_by=('_name',),
linkify=True
@@ -40,7 +40,6 @@ class VirtualMachineTable(NetBoxTable):
linkify=True
)
role = columns.ColoredLabelColumn()
- tenant = TenantColumn()
comments = columns.MarkdownColumn()
primary_ip4 = tables.Column(
linkify=True,
@@ -62,8 +61,9 @@ class VirtualMachineTable(NetBoxTable):
class Meta(NetBoxTable.Meta):
model = VirtualMachine
fields = (
- 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'vcpus', 'memory',
- 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'comments', 'tags', 'created', 'last_updated',
+ 'pk', 'id', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'tenant_group', 'platform',
+ 'vcpus', 'memory', 'disk', 'primary_ip4', 'primary_ip6', 'primary_ip', 'comments', 'tags', 'created',
+ 'last_updated',
)
default_columns = (
'pk', 'name', 'status', 'site', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk', 'primary_ip',
diff --git a/requirements.txt b/requirements.txt
index d5b86eafa..570c59adf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
-bleach==5.0.0
-Django==4.0.5
+bleach==5.0.1
+Django==4.0.6
django-cors-headers==3.13.0
-django-debug-toolbar==3.4.0
+django-debug-toolbar==3.5.0
django-filter==22.1
django-graphiql-debug-toolbar==0.2.0
django-mptt==0.13.4
@@ -20,13 +20,13 @@ gunicorn==20.1.0
Jinja2==3.1.2
Markdown==3.3.7
markdown-include==0.6.0
-mkdocs-material==8.3.6
+mkdocs-material==8.3.9
mkdocstrings[python-legacy]==0.19.0
netaddr==0.8.0
-Pillow==9.1.1
+Pillow==9.2.0
psycopg2-binary==2.9.3
PyYAML==6.0
-sentry-sdk==1.5.12
+sentry-sdk==1.7.0
social-auth-app-django==5.0.0
social-auth-core==4.3.0
svgwrite==1.4.2
|