19644 set atomic transactions to appropriate database

This commit is contained in:
Arthur 2025-06-05 09:31:17 -07:00
parent caaed888f7
commit 78f1e7d618
11 changed files with 33 additions and 33 deletions

View File

@ -384,7 +384,7 @@ class CircuitSwapTerminations(generic.ObjectEditView):
if termination_a and termination_z:
# Use a placeholder to avoid an IntegrityError on the (circuit, term_side) unique constraint
with transaction.atomic(router.db_for_write(CircuitTermination)):
with transaction.atomic(using=router.db_for_write(CircuitTermination)):
termination_a.term_side = '_'
termination_a.save()
termination_z.term_side = 'A'

View File

@ -53,7 +53,7 @@ def rebuild_paths(terminations):
for obj in terminations:
cable_paths = CablePath.objects.filter(_nodes__contains=obj)
with transaction.atomic(router.db_for_write(CablePath)):
with transaction.atomic(using=router.db_for_write(CablePath)):
for cp in cable_paths:
cp.delete()
create_cablepath(cp.origins)

View File

@ -124,7 +124,7 @@ class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View)
if form.is_valid():
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
count = 0
cable_ids = set()
for obj in self.queryset.filter(pk__in=form.cleaned_data['pk']):
@ -3746,7 +3746,7 @@ class VirtualChassisEditView(ObjectPermissionRequiredMixin, GetReturnURLMixin, V
if vc_form.is_valid() and formset.is_valid():
with transaction.atomic(router.db_for_write(Device)):
with transaction.atomic(using=router.db_for_write(Device)):
# Save the VirtualChassis
vc_form.save()

View File

@ -45,7 +45,7 @@ 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(router.db_for_write(Device)):
with transaction.atomic(using=router.db_for_write(Device)):
script.output = script.run(data, commit)
if not commit:
raise AbortTransaction()

View File

@ -295,7 +295,7 @@ class AvailableObjectsView(ObjectValidationMixin, APIView):
# Create the new IP address(es)
try:
with transaction.atomic(router.db_for_write(serializer.Meta.model)):
with transaction.atomic(using=router.db_for_write(serializer.Meta.model)):
created = serializer.save()
self._validate_objects(created)
except ObjectDoesNotExist:

View File

@ -170,7 +170,7 @@ class NetBoxModelViewSet(
# Enforce object-level permissions on save()
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
instance = serializer.save()
self._validate_objects(instance)
except ObjectDoesNotExist:
@ -190,7 +190,7 @@ class NetBoxModelViewSet(
# Enforce object-level permissions on save()
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
instance = serializer.save()
self._validate_objects(instance)
except ObjectDoesNotExist:

View File

@ -56,8 +56,8 @@ class SequentialBulkCreatesMixin:
which depends on the evaluation of existing objects (such as checking for free space within a rack) functions
appropriately.
"""
@transaction.atomic
def create(self, request, *args, **kwargs):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
if not isinstance(request.data, list):
# Creating a single object
return super().create(request, *args, **kwargs)
@ -113,7 +113,7 @@ class BulkUpdateModelMixin:
return Response(data, status=status.HTTP_200_OK)
def perform_bulk_update(self, objects, update_data, partial):
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
data_list = []
for obj in objects:
data = update_data.get(obj.id)
@ -157,7 +157,7 @@ class BulkDestroyModelMixin:
return Response(status=status.HTTP_204_NO_CONTENT)
def perform_bulk_destroy(self, objects):
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
for obj in objects:
if hasattr(obj, 'snapshot'):
obj.snapshot()

View File

@ -278,7 +278,7 @@ class BulkCreateView(GetReturnURLMixin, BaseMultiObjectView):
logger.debug("Form validation was successful")
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
new_objs = self._create_objects(form, request)
# Enforce object-level permissions
@ -501,7 +501,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
try:
# Iterate through data and bind each record to a new model form instance.
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
new_objs = self.create_and_update_objects(form, request)
# Enforce object-level permissions
@ -681,7 +681,7 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView):
if form.is_valid():
logger.debug("Form validation was successful")
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
updated_objects = self._update_objects(form, request)
# Enforce object-level permissions
@ -778,7 +778,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView):
if form.is_valid():
try:
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
renamed_pks = self._rename_objects(form, selected_objects)
if '_apply' in request.POST:
@ -875,7 +875,7 @@ class BulkDeleteView(GetReturnURLMixin, BaseMultiObjectView):
queryset = self.queryset.filter(pk__in=pk_list)
deleted_count = queryset.count()
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
for obj in queryset:
# Take a snapshot of change-logged models
if hasattr(obj, 'snapshot'):
@ -980,7 +980,7 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView):
}
try:
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
for obj in data['pk']:

View File

@ -240,7 +240,7 @@ class BulkSyncDataView(GetReturnURLMixin, BaseMultiObjectView):
data_file__isnull=False
)
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
for obj in selected_objects:
obj.sync(save=True)

View File

@ -282,7 +282,7 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView):
logger.debug("Form validation was successful")
try:
with transaction.atomic(router.db_for_write(model)):
with transaction.atomic(using=router.db_for_write(model)):
object_created = form.instance.pk is None
obj = form.save()
@ -570,7 +570,7 @@ class ComponentCreateView(GetReturnURLMixin, BaseObjectView):
if not form.errors and not component_form.errors:
try:
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
# Create the new components
new_objs = []
for component_form in new_components:

View File

@ -297,7 +297,7 @@ class ClusterAddDevicesView(generic.ObjectEditView):
if form.is_valid():
device_pks = form.cleaned_data['devices']
with transaction.atomic(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
# 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(router.db_for_write(self.queryset.model)):
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
# Remove the selected Devices from the Cluster
for device in Device.objects.filter(pk__in=device_pks):