From cb983c6308431b22604f96d3023a8f58b15f8f99 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 2 Apr 2026 10:28:35 -0400 Subject: [PATCH] Panel.render() should pass the request to render_to_string() --- netbox/dcim/ui/panels.py | 21 ++++----------------- netbox/extras/ui/panels.py | 3 +-- netbox/netbox/ui/panels.py | 3 ++- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/netbox/dcim/ui/panels.py b/netbox/dcim/ui/panels.py index 0434d37ff..6edfd9b64 100644 --- a/netbox/dcim/ui/panels.py +++ b/netbox/dcim/ui/panels.py @@ -1,5 +1,4 @@ from django.contrib.contenttypes.models import ContentType -from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ from netbox.ui import actions, attrs, panels @@ -393,10 +392,6 @@ class ConnectionPanel(panels.ObjectPanel): 'show_endpoints': self.show_endpoints, } - def render(self, context): - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) - class InventoryItemsPanel(panels.ObjectPanel): """ @@ -414,10 +409,6 @@ class InventoryItemsPanel(panels.ObjectPanel): ), ] - def render(self, context): - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) - class VirtualChassisMembersPanel(panels.ObjectPanel): """ @@ -531,8 +522,7 @@ class InterfaceConnectionPanel(panels.ObjectPanel): obj = context.get('object') if obj and obj.is_virtual: return '' - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) + return super().render(context) class VirtualCircuitPanel(panels.ObjectPanel): @@ -546,8 +536,7 @@ class VirtualCircuitPanel(panels.ObjectPanel): obj = context.get('object') if not obj or not obj.is_virtual or not hasattr(obj, 'virtual_circuit_termination'): return '' - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) + return super().render(context) class InterfaceWirelessPanel(panels.ObjectPanel): @@ -561,8 +550,7 @@ class InterfaceWirelessPanel(panels.ObjectPanel): obj = context.get('object') if not obj or not obj.is_wireless: return '' - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) + return super().render(context) class WirelessLANsPanel(panels.ObjectPanel): @@ -576,5 +564,4 @@ class WirelessLANsPanel(panels.ObjectPanel): obj = context.get('object') if not obj or not obj.is_wireless: return '' - ctx = self.get_context(context) - return render_to_string(self.template_name, ctx, request=ctx.get('request')) + return super().render(context) diff --git a/netbox/extras/ui/panels.py b/netbox/extras/ui/panels.py index 51b59c57b..d2bee80f2 100644 --- a/netbox/extras/ui/panels.py +++ b/netbox/extras/ui/panels.py @@ -1,5 +1,4 @@ from django.contrib.contenttypes.models import ContentType -from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ from netbox.ui import actions, attrs, panels @@ -70,7 +69,7 @@ class CustomFieldsPanel(panels.ObjectPanel): # Hide the panel if no custom fields exist if not ctx['custom_fields']: return '' - return render_to_string(self.template_name, self.get_context(context)) + return super().render(context) class ImageAttachmentsPanel(panels.ObjectsTablePanel): diff --git a/netbox/netbox/ui/panels.py b/netbox/netbox/ui/panels.py index 632b9253b..a2f3774af 100644 --- a/netbox/netbox/ui/panels.py +++ b/netbox/netbox/ui/panels.py @@ -78,7 +78,8 @@ class Panel: Parameters: context (dict): The template context """ - return render_to_string(self.template_name, self.get_context(context)) + ctx = self.get_context(context) + return render_to_string(self.template_name, ctx, request=ctx.get('request')) #