Browse Source

Fixes #12463: Fix the association of completed jobs with reports & scripts in the REST API

jeremystretch 2 years ago
parent
commit
a29a07ed26
2 changed files with 9 additions and 11 deletions
  1. 1 0
      docs/release-notes/version-3.5.md
  2. 8 11
      netbox/extras/api/views.py

+ 1 - 0
docs/release-notes/version-3.5.md

@@ -34,6 +34,7 @@
 * [#12415](https://github.com/netbox-community/netbox/issues/12415) - Fix `ImportError` exception when running RQ worker
 * [#12433](https://github.com/netbox-community/netbox/issues/12433) - Correct the application of URL query parameters for object list dashboard widgets
 * [#12436](https://github.com/netbox-community/netbox/issues/12436) - Remove extraneous "add" button from contact assignments list
+* [#12463](https://github.com/netbox-community/netbox/issues/12463) - Fix the association of completed jobs with reports & scripts in the REST API
 * [#12464](https://github.com/netbox-community/netbox/issues/12464) - Apply credentials for git data source only when connecting via HTTP/S
 * [#12476](https://github.com/netbox-community/netbox/issues/12476) - Fix `TypeError` exception when running the `runscript` management command
 * [#12483](https://github.com/netbox-community/netbox/issues/12483) - Fix git remote data syncing when with HTTP proxies defined

+ 8 - 11
netbox/extras/api/views.py

@@ -187,11 +187,10 @@ class ReportViewSet(ViewSet):
         """
         Compile all reports and their related results (if any). Result data is deferred in the list view.
         """
-        report_content_type = ContentType.objects.get(app_label='extras', model='report')
         results = {
-            r.name: r
-            for r in Job.objects.filter(
-                object_type=report_content_type,
+            job.name: job
+            for job in Job.objects.filter(
+                object_type=ContentType.objects.get(app_label='extras', model='reportmodule'),
                 status__in=JobStatusChoices.TERMINAL_STATE_CHOICES
             ).order_by('name', '-created').distinct('name').defer('data')
         }
@@ -202,7 +201,7 @@ class ReportViewSet(ViewSet):
 
         # Attach Job objects to each report (if any)
         for report in report_list:
-            report.result = results.get(report.full_name, None)
+            report.result = results.get(report.name, None)
 
         serializer = serializers.ReportSerializer(report_list, many=True, context={
             'request': request,
@@ -290,12 +289,10 @@ class ScriptViewSet(ViewSet):
         return module, script
 
     def list(self, request):
-
-        script_content_type = ContentType.objects.get(app_label='extras', model='script')
         results = {
-            r.name: r
-            for r in Job.objects.filter(
-                object_type=script_content_type,
+            job.name: job
+            for job in Job.objects.filter(
+                object_type=ContentType.objects.get(app_label='extras', model='scriptmodule'),
                 status__in=JobStatusChoices.TERMINAL_STATE_CHOICES
             ).order_by('name', '-created').distinct('name').defer('data')
         }
@@ -306,7 +303,7 @@ class ScriptViewSet(ViewSet):
 
         # Attach Job objects to each script (if any)
         for script in script_list:
-            script.result = results.get(script.full_name, None)
+            script.result = results.get(script.name, None)
 
         serializer = serializers.ScriptSerializer(script_list, many=True, context={'request': request})