From 957bc3d3de908722f3ce6d3ee7e4124021267f20 Mon Sep 17 00:00:00 2001 From: Alexander Haase Date: Fri, 21 Jun 2024 00:01:19 +0200 Subject: [PATCH] Restore using import_string for jobs Using the 'import_string()' utility from Django allows the job script class to be simplified, as module imports no longer need to avoid loops. This should make it easier to queue and maintain jobs. --- netbox/core/jobs.py | 9 ++++----- netbox/core/models/data.py | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/netbox/core/jobs.py b/netbox/core/jobs.py index 8f7ddd0d8..8605a6dec 100644 --- a/netbox/core/jobs.py +++ b/netbox/core/jobs.py @@ -1,6 +1,10 @@ import logging +from netbox.search.backends import search_backend from utilities.jobs import BackgroundJob +from .choices import DataSourceStatusChoices +from .exceptions import SyncError +from .models import DataSource logger = logging.getLogger(__name__) @@ -12,11 +16,6 @@ class SyncDataSourceJob(BackgroundJob): @classmethod def run(cls, job, *args, **kwargs): - from netbox.search.backends import search_backend - from .choices import DataSourceStatusChoices - from .exceptions import SyncError - from .models import DataSource - datasource = DataSource.objects.get(pk=job.object_id) try: diff --git a/netbox/core/models/data.py b/netbox/core/models/data.py index a354edfc4..5785d7276 100644 --- a/netbox/core/models/data.py +++ b/netbox/core/models/data.py @@ -12,6 +12,7 @@ from django.core.validators import RegexValidator from django.db import models from django.urls import reverse from django.utils import timezone +from django.utils.module_loading import import_string from django.utils.translation import gettext as _ from netbox.constants import CENSOR_TOKEN, CENSOR_TOKEN_CHANGED @@ -161,7 +162,7 @@ class DataSource(JobsMixin, PrimaryModel): DataSource.objects.filter(pk=self.pk).update(status=self.status) # Enqueue a sync job - from ..jobs import SyncDataSourceJob + SyncDataSourceJob = import_string('core.jobs.SyncDataSourceJob') return SyncDataSourceJob.enqueue( instance=self, user=request.user