From 3f7d24b596806f19daa4ce8dd9efa427fd24dd01 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Thu, 3 Jul 2025 10:31:27 -0400 Subject: [PATCH] Use an informative name for the job --- netbox/core/models/jobs.py | 2 +- netbox/netbox/views/generic/bulk_views.py | 8 ++++++-- netbox/utilities/jobs.py | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 779e767b6..b36cc16f5 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -116,7 +116,7 @@ class Job(models.Model): verbose_name_plural = _('jobs') def __str__(self): - return str(self.job_id) + return self.name def get_absolute_url(self): # TODO: Employ dynamic registration diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index eb4c2060e..67c8d6c56 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -506,8 +506,12 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): # If indicated, defer this request to a background job & redirect the user if form.cleaned_data['background_job']: - if job := process_request_as_job(self.__class__, request): - msg = _('Created background job {job}').format( + job_name = _('Bulk import {count} {object_type}').format( + count=len(form.cleaned_data['data']), + object_type=model._meta.verbose_name_plural, + ) + if job := process_request_as_job(self.__class__, request, name=job_name): + msg = _('Created background job {job.pk}: {job.name}').format( url=job.get_absolute_url(), job=job ) diff --git a/netbox/utilities/jobs.py b/netbox/utilities/jobs.py index d7ace484c..800d54949 100644 --- a/netbox/utilities/jobs.py +++ b/netbox/utilities/jobs.py @@ -24,7 +24,7 @@ def is_background_request(request): return getattr(request, '_background', False) -def process_request_as_job(view, request): +def process_request_as_job(view, request, name=None): """ Process a request using a view as a background job. """ @@ -39,6 +39,7 @@ def process_request_as_job(view, request): # Enqueue a job to perform the work in the background return AsyncViewJob.enqueue( + name=name, user=request.user, view_cls=view, request=request_copy,