From ccd5a756e5f4c8c851deca00afe7b5eaa2c31f4b Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 2 Mar 2026 16:34:32 -0800 Subject: [PATCH] 21550 call snapshot() before save --- netbox/dcim/forms/bulk_import.py | 1 + netbox/dcim/views.py | 3 +++ netbox/ipam/forms/bulk_import.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index 435506343..c14b7d533 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -1386,6 +1386,7 @@ class MACAddressImportForm(PrimaryModelImportForm): # Assign the MAC address as primary for its interface, if designated as such if interface and self.cleaned_data['is_primary'] and self.instance.pk: + interface.snapshot() interface.primary_mac_address = self.instance interface.save() diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index df6fcd55c..0c24f438b 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2733,6 +2733,7 @@ class DeviceBulkImportView(generic.BulkImportView): # For child devices, save the reverse relation to the parent device bay if parent_bay: device_bay = parent_bay + device_bay.snapshot() device_bay.installed_device = obj device_bay.save() @@ -4099,9 +4100,11 @@ class VirtualChassisEditView(ObjectPermissionRequiredMixin, GetReturnURLMixin, V members = formset.save(commit=False) devices = Device.objects.filter(pk__in=[m.pk for m in members]) for device in devices: + device.snapshot() device.vc_position = None device.save() for member in members: + member.snapshot() member.save() return redirect(virtual_chassis.get_absolute_url()) diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index d55d58c68..7f9b5a00c 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -424,6 +424,7 @@ class IPAddressImportForm(PrimaryModelImportForm): # Set as primary for device/VM if self.cleaned_data.get('is_primary') is not None: parent = self.cleaned_data.get('device') or self.cleaned_data.get('virtual_machine') + parent.snapshot() if self.instance.address.version == 4: parent.primary_ip4 = ipaddress if self.cleaned_data.get('is_primary') else None elif self.instance.address.version == 6: @@ -433,6 +434,7 @@ class IPAddressImportForm(PrimaryModelImportForm): # Set as OOB for device if self.cleaned_data.get('is_oob') is not None: parent = self.cleaned_data.get('device') + parent.snapshot() parent.oob_ip = ipaddress if self.cleaned_data.get('is_oob') else None parent.save()