From 584fff90c72efe807408f6d7b0c0d9a2661e7e6b Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Date: Mon, 28 Apr 2025 11:57:48 -0300 Subject: [PATCH] Closes #18215: Create ScriptJobTable from JobTable and add it to ScriptSourceView (#19337) --- netbox/extras/tables/tables.py | 20 ++++++++++++++++++++ netbox/extras/views.py | 5 ++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index cb9538cd2..805fa5621 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -5,6 +5,8 @@ from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from extras.models import * +from core.tables import JobTable +from core.models import Job from netbox.constants import EMPTY_TABLE_TEXT from netbox.events import get_event_text from netbox.tables import BaseTable, NetBoxTable, columns @@ -26,6 +28,7 @@ __all__ = ( 'SavedFilterTable', 'ReportResultsTable', 'ScriptResultsTable', + 'ScriptJobTable', 'SubscriptionTable', 'TaggedItemTable', 'TagTable', @@ -638,6 +641,23 @@ class ScriptResultsTable(BaseTable): return format_html("{}", value, value) +class ScriptJobTable(JobTable): + id = tables.TemplateColumn( + template_code="""{{ record.id }}""", + verbose_name=_('ID'), + ) + + class Meta(NetBoxTable.Meta): + model = Job + fields = ( + 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'scheduled', 'interval', 'started', + 'completed', 'user', 'error', 'job_id', + ) + default_columns = ( + 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'started', 'completed', 'user', + ) + + class ReportResultsTable(BaseTable): index = tables.Column( verbose_name=_('Line') diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 4de8f7e1a..72ea72574 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -15,7 +15,6 @@ from jinja2.exceptions import TemplateError from core.choices import ManagedFileRootPathChoices from core.forms import ManagedFileForm from core.models import Job -from core.tables import JobTable from dcim.models import Device, DeviceRole, Platform from extras.choices import LogLevelChoices from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm @@ -36,7 +35,7 @@ from virtualization.models import VirtualMachine from . import filtersets, forms, tables from .constants import LOG_LEVEL_RANK from .models import * -from .tables import ReportResultsTable, ScriptResultsTable +from .tables import ReportResultsTable, ScriptResultsTable, ScriptJobTable # @@ -1351,7 +1350,7 @@ class ScriptJobsView(BaseScriptView): def get(self, request, **kwargs): script = self.get_object(**kwargs) - jobs_table = JobTable( + jobs_table = ScriptJobTable( data=script.jobs.all(), orderable=False, user=request.user