mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-14 01:41:22 -06:00
16149 add (optional) obj hyperlink to script list table (#16271)
* 16149 add (optional) obj hyperlink to script list table * 16149 add (optional) obj hyperlink to script list table * 16149 review feedback * 16149 review changes
This commit is contained in:
parent
dda0b0bbd1
commit
85fd232614
@ -138,11 +138,11 @@ These two methods will load data in YAML or JSON format, respectively, from file
|
||||
|
||||
The Script object provides a set of convenient functions for recording messages at different severity levels:
|
||||
|
||||
* `log_debug(message, object=None)`
|
||||
* `log_success(message, object=None)`
|
||||
* `log_info(message, object=None)`
|
||||
* `log_warning(message, object=None)`
|
||||
* `log_failure(message, object=None)`
|
||||
* `log_debug(message, obj=None)`
|
||||
* `log_success(message, obj=None)`
|
||||
* `log_info(message, obj=None)`
|
||||
* `log_warning(message, obj=None)`
|
||||
* `log_failure(message, obj=None)`
|
||||
|
||||
Log messages are returned to the user upon execution of the script. Markdown rendering is supported for log messages. A message may optionally be associated with a particular object by passing it as the second argument to the logging method.
|
||||
|
||||
|
@ -500,6 +500,8 @@ class BaseScript:
|
||||
'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
|
||||
|
@ -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 *
|
||||
@ -545,6 +546,9 @@ class ScriptResultsTable(BaseTable):
|
||||
template_code="""{% load log_levels %}{% log_level record.status %}""",
|
||||
verbose_name=_('Level')
|
||||
)
|
||||
object = tables.Column(
|
||||
verbose_name=_('Object')
|
||||
)
|
||||
message = columns.MarkdownColumn(
|
||||
verbose_name=_('Message')
|
||||
)
|
||||
@ -552,8 +556,17 @@ class ScriptResultsTable(BaseTable):
|
||||
class Meta(BaseTable.Meta):
|
||||
empty_text = _(EMPTY_TABLE_TEXT)
|
||||
fields = (
|
||||
'index', 'time', 'status', 'message',
|
||||
'index', 'time', 'status', 'object', 'message',
|
||||
)
|
||||
default_columns = (
|
||||
'index', 'time', 'status', 'object', 'message',
|
||||
)
|
||||
|
||||
def render_object(self, value, record):
|
||||
return format_html("<a href='{}'>{}</a>", record['url'], value)
|
||||
|
||||
def render_url(self, value):
|
||||
return format_html("<a href='{}'>{}</a>", value, value)
|
||||
|
||||
|
||||
class ReportResultsTable(BaseTable):
|
||||
@ -585,3 +598,9 @@ class ReportResultsTable(BaseTable):
|
||||
fields = (
|
||||
'index', 'method', 'time', 'status', 'object', 'url', 'message',
|
||||
)
|
||||
|
||||
def render_object(self, value, record):
|
||||
return format_html("<a href='{}'>{}</a>", record['url'], value)
|
||||
|
||||
def render_url(self, value):
|
||||
return format_html("<a href='{}'>{}</a>", value, value)
|
||||
|
@ -1201,6 +1201,8 @@ class ScriptResultView(TableMixin, generic.ObjectView):
|
||||
'time': log.get('time'),
|
||||
'status': log.get('status'),
|
||||
'message': log.get('message'),
|
||||
'object': log.get('obj'),
|
||||
'url': log.get('url'),
|
||||
}
|
||||
data.append(result)
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
{# Object table controls #}
|
||||
<div class="row mb-3">
|
||||
<div class="col-auto ms-auto d-print-none">
|
||||
{% if request.user.is_authenticated %}
|
||||
{% if request.user.is_authenticated and job.completed %}
|
||||
<div class="table-configure input-group">
|
||||
<button type="button" data-bs-toggle="modal" title="{% trans "Configure Table" %}" data-bs-target="#ObjectTable_config"
|
||||
class="btn">
|
||||
|
Loading…
Reference in New Issue
Block a user