diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index d33743cd4a3..e836477111e 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -500,6 +500,8 @@ def _log(self, message, obj=None, level=LogLevelChoices.LOG_DEFAULT): 'time': timezone.now().isoformat(), 'status': level, 'message': str(message), + 'obj': str(obj) if obj else None, + 'url': obj.get_absolute_url() if hasattr(obj, 'get_absolute_url') else None, }) # Record to the system log diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 2dbf93b2f7b..c243ac00045 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -1,6 +1,7 @@ import json import django_tables2 as tables +from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from extras.models import * @@ -564,6 +565,12 @@ class Meta(BaseTable.Meta): 'index', 'time', 'status', 'message', ) + def render_object(self, value, record): + return format_html("{}", record['url'], value) + + def render_url(self, value): + return format_html("{}", value, value) + class ReportResultsTable(BaseTable): index = tables.Column( @@ -594,3 +601,9 @@ class Meta(BaseTable.Meta): fields = ( 'index', 'method', 'time', 'status', 'object', 'url', 'message', ) + + def render_object(self, value, record): + return format_html("{}", record['url'], value) + + def render_url(self, value): + return format_html("{}", value, value) diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 3a82539fb9f..b9fbf6803ad 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1201,6 +1201,8 @@ def get_table(self, job, request, bulk_actions=True): 'time': log.get('time'), 'status': log.get('status'), 'message': log.get('message'), + 'object': log.get('obj'), + 'url': log.get('url'), } data.append(result)