Skip to content

Commit d79fa13

Browse files
committed
Closes #13415: Pass request context when rendering custom links in a table column
1 parent be2b24a commit d79fa13

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

netbox/netbox/tables/columns.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import django_tables2 as tables
66
from django.conf import settings
7+
from django.contrib.auth.context_processors import auth
78
from django.contrib.auth.models import AnonymousUser
89
from django.db.models import DateField, DateTimeField
910
from django.template import Context, Template
@@ -510,25 +511,32 @@ def __init__(self, customlink, *args, **kwargs):
510511

511512
super().__init__(*args, **kwargs)
512513

513-
def render(self, record):
514-
try:
515-
rendered = self.customlink.render({
516-
'object': record,
517-
'obj': record, # TODO: Remove in NetBox v3.5
514+
def _render_customlink(self, record, table):
515+
context = {
516+
'object': record,
517+
'obj': record, # TODO: Remove in NetBox v3.5
518+
'debug': settings.DEBUG,
519+
}
520+
if request := getattr(table, 'context', {}).get('request'):
521+
# If the request is available, include it as context
522+
context.update({
523+
'request': request,
524+
**auth(request),
518525
})
519-
if rendered:
526+
527+
return self.customlink.render(context)
528+
529+
def render(self, record, table, **kwargs):
530+
try:
531+
if rendered := self._render_customlink(record, table):
520532
return mark_safe(f'<a href="{rendered["link"]}"{rendered["link_target"]}>{rendered["text"]}</a>')
521533
except Exception as e:
522534
return mark_safe(f'<span class="text-danger" title="{e}"><i class="mdi mdi-alert"></i> Error</span>')
523535
return ''
524536

525-
def value(self, record):
537+
def value(self, record, table, **kwargs):
526538
try:
527-
rendered = self.customlink.render({
528-
'object': record,
529-
'obj': record, # TODO: Remove in NetBox v3.5
530-
})
531-
if rendered:
539+
if rendered := self._render_customlink(record, table):
532540
return rendered['link']
533541
except Exception:
534542
pass

0 commit comments

Comments
 (0)