From f13a00b2dd33bffc3048c861b494096df457f212 Mon Sep 17 00:00:00 2001 From: kkthxbye <> Date: Thu, 24 Mar 2022 13:42:07 +0100 Subject: [PATCH] Save old JobResults --- netbox/extras/api/views.py | 4 ++-- netbox/extras/management/commands/runscript.py | 7 ------- netbox/extras/reports.py | 9 --------- netbox/extras/scripts.py | 11 +---------- netbox/extras/views.py | 4 ++-- netbox/netbox/views/__init__.py | 11 +---------- 6 files changed, 6 insertions(+), 40 deletions(-) diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 579e39d86..688f3c7ab 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -179,7 +179,7 @@ class ReportViewSet(ViewSet): for r in JobResult.objects.filter( obj_type=report_content_type, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).defer('data') + ).order_by('name', '-created').distinct('name').defer('data') } # Iterate through all available Reports. @@ -271,7 +271,7 @@ class ScriptViewSet(ViewSet): for r in JobResult.objects.filter( obj_type=script_content_type, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).defer('data').order_by('created') + ).order_by('name', '-created').distinct('name').defer('data') } flat_list = [] diff --git a/netbox/extras/management/commands/runscript.py b/netbox/extras/management/commands/runscript.py index 0d1dc5cea..12188619f 100644 --- a/netbox/extras/management/commands/runscript.py +++ b/netbox/extras/management/commands/runscript.py @@ -113,13 +113,6 @@ class Command(BaseCommand): script_content_type = ContentType.objects.get(app_label='extras', model='script') - # Delete any previous terminal state results - JobResult.objects.filter( - obj_type=script_content_type, - name=script.full_name, - status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).delete() - # Create the job result job_result = JobResult.objects.create( name=script.full_name, diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index 0bdc4847e..0a8a8d89b 100644 --- a/netbox/extras/reports.py +++ b/netbox/extras/reports.py @@ -84,15 +84,6 @@ def run_report(job_result, *args, **kwargs): job_result.save() logging.error(f"Error during execution of report {job_result.name}") - # Delete any previous terminal state results - JobResult.objects.filter( - obj_type=job_result.obj_type, - name=job_result.name, - status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).exclude( - pk=job_result.pk - ).delete() - class Report(object): """ diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index 5351bca8a..4eacddbeb 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -481,15 +481,6 @@ def run_script(data, request, commit=True, *args, **kwargs): else: _run_script() - # Delete any previous terminal state results - JobResult.objects.filter( - obj_type=job_result.obj_type, - name=job_result.name, - status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).exclude( - pk=job_result.pk - ).delete() - def get_scripts(use_names=False): """ @@ -497,7 +488,7 @@ def get_scripts(use_names=False): defined name in place of the actual module name. """ scripts = OrderedDict() - # Iterate through all modules within the reports path. These are the user-created files in which reports are + # Iterate through all modules within the scripts path. These are the user-created files in which reports are # defined. for importer, module_name, _ in pkgutil.iter_modules([settings.SCRIPTS_ROOT]): # Remove cached module to ensure consistency with filesystem diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 785c5eb5a..9825d10de 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -524,7 +524,7 @@ class ReportListView(ContentTypePermissionRequiredMixin, View): for r in JobResult.objects.filter( obj_type=report_content_type, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).defer('data') + ).order_by('name', '-created').distinct('name').defer('data') } ret = [] @@ -656,7 +656,7 @@ class ScriptListView(ContentTypePermissionRequiredMixin, View): for r in JobResult.objects.filter( obj_type=script_content_type, status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).defer('data') + ).order_by('name', '-created').distinct('name').defer('data') } for _scripts in scripts.values(): diff --git a/netbox/netbox/views/__init__.py b/netbox/netbox/views/__init__.py index 5d388be35..fad347c36 100644 --- a/netbox/netbox/views/__init__.py +++ b/netbox/netbox/views/__init__.py @@ -19,8 +19,7 @@ from circuits.models import Circuit, Provider from dcim.models import ( Cable, ConsolePort, Device, DeviceType, Interface, PowerPanel, PowerFeed, PowerPort, Rack, Site, ) -from extras.choices import JobResultStatusChoices -from extras.models import ObjectChange, JobResult +from extras.models import ObjectChange from extras.tables import ObjectChangeTable from ipam.models import Aggregate, IPAddress, IPRange, Prefix, VLAN, VRF from netbox.constants import SEARCH_MAX_RESULTS, SEARCH_TYPES @@ -48,13 +47,6 @@ class HomeView(View): pk__lt=F('_path__destination_id') ) - # Report Results - report_content_type = ContentType.objects.get(app_label='extras', model='report') - report_results = JobResult.objects.filter( - obj_type=report_content_type, - status__in=JobResultStatusChoices.TERMINAL_STATE_CHOICES - ).defer('data')[:10] - def build_stats(): org = ( ("dcim.view_site", "Sites", Site.objects.restrict(request.user, 'view').count), @@ -150,7 +142,6 @@ class HomeView(View): return render(request, self.template_name, { 'search_form': SearchForm(), 'stats': build_stats(), - 'report_results': report_results, 'changelog_table': changelog_table, 'new_release': new_release, })