|
4 | 4 |
|
5 | 5 | import django_tables2 as tables |
6 | 6 | from django.conf import settings |
| 7 | +from django.contrib.auth.context_processors import auth |
7 | 8 | from django.contrib.auth.models import AnonymousUser |
8 | 9 | from django.db.models import DateField, DateTimeField |
9 | 10 | from django.template import Context, Template |
@@ -510,25 +511,32 @@ def __init__(self, customlink, *args, **kwargs): |
510 | 511 |
|
511 | 512 | super().__init__(*args, **kwargs) |
512 | 513 |
|
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), |
518 | 525 | }) |
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): |
520 | 532 | return mark_safe(f'<a href="{rendered["link"]}"{rendered["link_target"]}>{rendered["text"]}</a>') |
521 | 533 | except Exception as e: |
522 | 534 | return mark_safe(f'<span class="text-danger" title="{e}"><i class="mdi mdi-alert"></i> Error</span>') |
523 | 535 | return '' |
524 | 536 |
|
525 | | - def value(self, record): |
| 537 | + def value(self, record, table, **kwargs): |
526 | 538 | 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): |
532 | 540 | return rendered['link'] |
533 | 541 | except Exception: |
534 | 542 | pass |
|
0 commit comments