From 1f24876c4fc18bccc0f68fd0bc3a153b08cea7f5 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 2 Oct 2024 08:41:03 -0500 Subject: [PATCH 1/4] Fixes: #17648 - Fix exception thrown in `Job.delete()` when no object_type specified --- netbox/core/models/jobs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 4a327a1d853..c794d9295d8 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -118,9 +118,9 @@ def __str__(self): def get_absolute_url(self): # TODO: Employ dynamic registration - if self.object_type.model == 'reportmodule': + if self.object_type and self.object_type.model == 'reportmodule': return reverse(f'extras:report_result', kwargs={'job_pk': self.pk}) - if self.object_type.model == 'scriptmodule': + elif self.object_type and self.object_type.model == 'scriptmodule': return reverse(f'extras:script_result', kwargs={'job_pk': self.pk}) return reverse('core:job', args=[self.pk]) @@ -154,7 +154,7 @@ def duration(self): def delete(self, *args, **kwargs): super().delete(*args, **kwargs) - rq_queue_name = get_config().QUEUE_MAPPINGS.get(self.object_type.model, RQ_QUEUE_DEFAULT) + rq_queue_name = get_queue_for_model(self.object_type.model if self.object_type else None) queue = django_rq.get_queue(rq_queue_name) job = queue.fetch_job(str(self.job_id)) From ac5b5e85bfc433feae8c26b5df59504a5fb8aeba Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 2 Oct 2024 09:47:11 -0500 Subject: [PATCH 2/4] Remove unrelated fix --- netbox/core/models/jobs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index c794d9295d8..d1720e7e01f 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -118,9 +118,9 @@ def __str__(self): def get_absolute_url(self): # TODO: Employ dynamic registration - if self.object_type and self.object_type.model == 'reportmodule': + if self.object_type.model == 'reportmodule': return reverse(f'extras:report_result', kwargs={'job_pk': self.pk}) - elif self.object_type and self.object_type.model == 'scriptmodule': + elif self.object_type.model == 'scriptmodule': return reverse(f'extras:script_result', kwargs={'job_pk': self.pk}) return reverse('core:job', args=[self.pk]) From 0e98306503ff18ad20f68b7b11ecf0942d9a481f Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 2 Oct 2024 09:57:38 -0500 Subject: [PATCH 3/4] Change back elif to if --- netbox/core/models/jobs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index d1720e7e01f..443b62b393e 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -120,7 +120,7 @@ def get_absolute_url(self): # TODO: Employ dynamic registration if self.object_type.model == 'reportmodule': return reverse(f'extras:report_result', kwargs={'job_pk': self.pk}) - elif self.object_type.model == 'scriptmodule': + if self.object_type.model == 'scriptmodule': return reverse(f'extras:script_result', kwargs={'job_pk': self.pk}) return reverse('core:job', args=[self.pk]) From 8fe98b56180b3660d73ac0686b797a3225ec7091 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 7 Oct 2024 08:41:48 -0400 Subject: [PATCH 4/4] Remove unused imports --- netbox/core/models/jobs.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 443b62b393e..4c98580afbe 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -13,8 +13,6 @@ from core.choices import JobStatusChoices from core.models import ObjectType from core.signals import job_end, job_start -from netbox.config import get_config -from netbox.constants import RQ_QUEUE_DEFAULT from utilities.querysets import RestrictedQuerySet from utilities.rqworker import get_queue_for_model