From 100f08d04d742d00f811ab69ef8ebbdfb6d3a403 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 20 Jun 2025 09:05:10 -0700 Subject: [PATCH] 19644 fix review comments --- netbox/circuits/views.py | 2 +- netbox/dcim/utils.py | 2 +- netbox/dcim/views.py | 4 ++-- netbox/extras/jobs.py | 10 ++++------ netbox/ipam/api/views.py | 2 +- netbox/netbox/api/viewsets/__init__.py | 2 +- netbox/netbox/api/viewsets/mixins.py | 2 +- netbox/netbox/views/generic/bulk_views.py | 2 +- netbox/netbox/views/generic/feature_views.py | 2 +- netbox/virtualization/views.py | 4 ++-- 10 files changed, 15 insertions(+), 17 deletions(-) diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 373180698..0b4439857 100644 --- a/netbox/circuits/views.py +++ b/netbox/circuits/views.py @@ -1,5 +1,5 @@ from django.contrib import messages -from django.db import transaction, router +from django.db import router, transaction from django.shortcuts import get_object_or_404, redirect, render from django.utils.translation import gettext_lazy as _ diff --git a/netbox/dcim/utils.py b/netbox/dcim/utils.py index d9ecc79b9..a03790ea2 100644 --- a/netbox/dcim/utils.py +++ b/netbox/dcim/utils.py @@ -1,6 +1,6 @@ from django.apps import apps from django.contrib.contenttypes.models import ContentType -from django.db import transaction, router +from django.db import router, transaction def compile_path_node(ct_id, object_id): diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index bb51370d8..304438698 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -1,7 +1,7 @@ from django.contrib import messages from django.contrib.contenttypes.models import ContentType from django.core.paginator import EmptyPage, PageNotAnInteger -from django.db import transaction, router +from django.db import router, transaction from django.db.models import Prefetch from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory from django.shortcuts import get_object_or_404, redirect, render @@ -124,7 +124,7 @@ class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View) if form.is_valid(): - with transaction.atomic(using=router.db_for_write(self.queryset.model)): + with transaction.atomic(using=router.db_for_write(Cable)): count = 0 cable_ids = set() for obj in self.queryset.filter(pk__in=form.cleaned_data['pk']): diff --git a/netbox/extras/jobs.py b/netbox/extras/jobs.py index feead3e82..45686b001 100644 --- a/netbox/extras/jobs.py +++ b/netbox/extras/jobs.py @@ -2,11 +2,10 @@ import logging import traceback from contextlib import ExitStack -from django.db import router, transaction +from django.db import transaction from django.utils.translation import gettext as _ from core.signals import clear_events -from dcim.models import Device from extras.models import Script as ScriptModel from netbox.jobs import JobRunner from netbox.registry import registry @@ -45,10 +44,9 @@ class ScriptJob(JobRunner): # any other database (for ChangeLogged models) - choosing Device as # the model to use as it has ChangeLoggingMixin with transaction.atomic(): - with transaction.atomic(using=router.db_for_write(Device)): - script.output = script.run(data, commit) - if not commit: - raise AbortTransaction() + script.output = script.run(data, commit) + if not commit: + raise AbortTransaction() except AbortTransaction: script.log_info(message=_("Database changes have been reverted automatically.")) if script.failed: diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index fe4532112..b0a7ad408 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -2,7 +2,7 @@ from copy import deepcopy from django.contrib.contenttypes.prefetch import GenericPrefetch from django.core.exceptions import ObjectDoesNotExist, PermissionDenied -from django.db import transaction, router +from django.db import router, transaction from django.shortcuts import get_object_or_404 from django.utils.translation import gettext as _ from django_pglocks import advisory_lock diff --git a/netbox/netbox/api/viewsets/__init__.py b/netbox/netbox/api/viewsets/__init__.py index fcb1128de..2039f735b 100644 --- a/netbox/netbox/api/viewsets/__init__.py +++ b/netbox/netbox/api/viewsets/__init__.py @@ -2,7 +2,7 @@ import logging from functools import cached_property from django.core.exceptions import ObjectDoesNotExist, PermissionDenied -from django.db import transaction, router +from django.db import router, transaction from django.db.models import ProtectedError, RestrictedError from django_pglocks import advisory_lock from netbox.constants import ADVISORY_LOCK_KEYS diff --git a/netbox/netbox/api/viewsets/mixins.py b/netbox/netbox/api/viewsets/mixins.py index 93bfd57ec..4fedebad5 100644 --- a/netbox/netbox/api/viewsets/mixins.py +++ b/netbox/netbox/api/viewsets/mixins.py @@ -1,5 +1,5 @@ from django.core.exceptions import ObjectDoesNotExist -from django.db import transaction, router +from django.db import router, transaction from django.http import Http404 from rest_framework import status from rest_framework.response import Response diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 3d676a963..b52d12d98 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -6,7 +6,7 @@ from django.contrib import messages from django.contrib.contenttypes.fields import GenericForeignKey, GenericRel from django.contrib.contenttypes.models import ContentType from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, ValidationError -from django.db import transaction, IntegrityError, router +from django.db import IntegrityError, router, transaction from django.db.models import ManyToManyField, ProtectedError, RestrictedError from django.db.models.fields.reverse_related import ManyToManyRel from django.forms import ModelMultipleChoiceField, MultipleHiddenInput diff --git a/netbox/netbox/views/generic/feature_views.py b/netbox/netbox/views/generic/feature_views.py index 302b84be0..d8ba2b475 100644 --- a/netbox/netbox/views/generic/feature_views.py +++ b/netbox/netbox/views/generic/feature_views.py @@ -1,7 +1,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.contenttypes.models import ContentType from django.contrib import messages -from django.db import transaction, router +from django.db import router, transaction from django.db.models import Q from django.shortcuts import get_object_or_404, redirect, render from django.utils.translation import gettext_lazy as _ diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index cde586eec..6013a56f4 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -297,7 +297,7 @@ class ClusterAddDevicesView(generic.ObjectEditView): if form.is_valid(): device_pks = form.cleaned_data['devices'] - with transaction.atomic(using=router.db_for_write(self.queryset.model)): + with transaction.atomic(using=router.db_for_write(Device)): # Assign the selected Devices to the Cluster for device in Device.objects.filter(pk__in=device_pks): @@ -332,7 +332,7 @@ class ClusterRemoveDevicesView(generic.ObjectEditView): if form.is_valid(): device_pks = form.cleaned_data['pk'] - with transaction.atomic(using=router.db_for_write(self.queryset.model)): + with transaction.atomic(using=router.db_for_write(Device)): # Remove the selected Devices from the Cluster for device in Device.objects.filter(pk__in=device_pks):