diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 243036091..932421fe9 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -1138,10 +1138,10 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView): logger.debug("Form validation was successful") # If indicated, defer this request to a background job & redirect the user - if form.cleaned_data.get('background_job'): + if form.cleaned_data['background_job']: job_name = _('Bulk add {count} {object_type}').format( count=len(form.cleaned_data['pk']), - object_type=model_name, + object_type=self.queryset.model._meta.verbose_name_plural, ) if process_request_as_job(self.__class__, request, name=job_name): return redirect(self.get_return_url(request)) @@ -1176,7 +1176,10 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView): else: for field, errors in component_form.errors.as_data().items(): for e in errors: - form.add_error(field, '{}: {}'.format(obj, ', '.join(e))) + err_msg = '{}: {}'.format(obj, ', '.join(e)) + form.add_error(field, err_msg) + if is_background_request(request): + request.job.logger.error(err_msg) # Enforce object-level permissions component_ids = [obj.pk for obj in new_components] @@ -1185,18 +1188,24 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView): except IntegrityError: clear_events.send(sender=self) + if is_background_request(request): + request.job.logger.error("An integrity error occurred while creating components") + raise JobFailed except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) clear_events.send(sender=self) + if is_background_request(request): + request.job.logger.error(e.message) + raise JobFailed if not form.errors: - msg = "Added {} {} to {} {}.".format( - len(new_components), - model_name, - len(form.cleaned_data['pk']), - parent_model_name + msg = _("Added {count} {component} to {parent_count} {parent}.").format( + count=len(new_components), + component=model_name, + parent_count=len(form.cleaned_data['pk']), + parent=parent_model_name, ) logger.info(msg)