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.
This commit is contained in:
Alexander Haase 2024-06-21 00:01:19 +02:00
parent 5fab8e4839
commit 957bc3d3de
2 changed files with 6 additions and 6 deletions

View File

@ -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:

View File

@ -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