diff --git a/netbox/netbox/tables/columns.py b/netbox/netbox/tables/columns.py
index 399b3c18476..8a67505c03b 100644
--- a/netbox/netbox/tables/columns.py
+++ b/netbox/netbox/tables/columns.py
@@ -4,6 +4,7 @@
import django_tables2 as tables
from django.conf import settings
+from django.contrib.auth.context_processors import auth
from django.contrib.auth.models import AnonymousUser
from django.db.models import DateField, DateTimeField
from django.template import Context, Template
@@ -510,25 +511,32 @@ def __init__(self, customlink, *args, **kwargs):
super().__init__(*args, **kwargs)
- def render(self, record):
- try:
- rendered = self.customlink.render({
- 'object': record,
- 'obj': record, # TODO: Remove in NetBox v3.5
+ def _render_customlink(self, record, table):
+ context = {
+ 'object': record,
+ 'obj': record, # TODO: Remove in NetBox v3.5
+ 'debug': settings.DEBUG,
+ }
+ if request := getattr(table, 'context', {}).get('request'):
+ # If the request is available, include it as context
+ context.update({
+ 'request': request,
+ **auth(request),
})
- if rendered:
+
+ return self.customlink.render(context)
+
+ def render(self, record, table, **kwargs):
+ try:
+ if rendered := self._render_customlink(record, table):
return mark_safe(f'{rendered["text"]}')
except Exception as e:
return mark_safe(f' Error')
return ''
- def value(self, record):
+ def value(self, record, table, **kwargs):
try:
- rendered = self.customlink.render({
- 'object': record,
- 'obj': record, # TODO: Remove in NetBox v3.5
- })
- if rendered:
+ if rendered := self._render_customlink(record, table):
return rendered['link']
except Exception:
pass