Просмотр исходного кода

convert update() calls to save() calls

John Anderson 6 лет назад
Родитель
Сommit
c359ac5737

+ 5 - 1
netbox/circuits/signals.py

@@ -10,4 +10,8 @@ def update_circuit(instance, **kwargs):
     """
     When a CircuitTermination has been modified, update the last_updated time of its parent Circuit.
     """
-    Circuit.objects.filter(pk=instance.circuit_id).invalidated_update(last_updated=timezone.now())
+    circuits = Circuit.objects.filter(pk=instance.circuit_id)
+    time = timezone.now()
+    for circuit in circuits:
+        circuit.last_updated = time
+        circuit.save()

+ 9 - 2
netbox/dcim/models.py

@@ -607,7 +607,10 @@ class Rack(ChangeLoggedModel, CustomFieldModel):
 
         # Update racked devices if the assigned Site has been changed.
         if _site_id is not None and self.site_id != _site_id:
-            Device.objects.filter(rack=self).invalidated_update(site_id=self.site.pk)
+            devices = Device.objects.filter(rack=self)
+            for device in devices:
+                device.site = self.site
+                device.save()
 
     def to_csv(self):
         return (
@@ -1738,7 +1741,11 @@ class Device(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
             )
 
         # Update Site and Rack assignment for any child Devices
-        Device.objects.filter(parent_bay__device=self).invalidated_update(site=self.site, rack=self.rack)
+        devices = Device.objects.filter(parent_bay__device=self)
+        for device in devices:
+            device.site = self.site
+            device.rack = self.rack
+            device.save()
 
     def to_csv(self):
         return (

+ 10 - 2
netbox/dcim/signals.py

@@ -10,7 +10,11 @@ def assign_virtualchassis_master(instance, created, **kwargs):
     When a VirtualChassis is created, automatically assign its master device to the VC.
     """
     if created:
-        Device.objects.filter(pk=instance.master.pk).invalidated_update(virtual_chassis=instance, vc_position=None)
+        devices = Device.objects.filter(pk=instance.master.pk)
+        for device in devices:
+            device.virtual_chassis = instance
+            device.vc_position = None
+            device.save()
 
 
 @receiver(pre_delete, sender=VirtualChassis)
@@ -18,7 +22,11 @@ def clear_virtualchassis_members(instance, **kwargs):
     """
     When a VirtualChassis is deleted, nullify the vc_position and vc_priority fields of its prior members.
     """
-    Device.objects.filter(virtual_chassis=instance.pk).invalidated_update(vc_position=None, vc_priority=None)
+    devices = Device.objects.filter(virtual_chassis=instance.pk)
+    for device in devices:
+            device.vc_position = None
+            device.vc_priority = None
+            device.save()
 
 
 @receiver(post_save, sender=Cable)

+ 4 - 4
netbox/dcim/tests/test_api.py

@@ -3430,11 +3430,11 @@ class VirtualChassisTest(APITestCase):
 
         # Create two VirtualChassis with three members each
         self.vc1 = VirtualChassis.objects.create(master=self.device1, domain='test-domain-1')
-        Device.objects.filter(pk=self.device2.pk).invalidated_update(virtual_chassis=self.vc1, vc_position=2)
-        Device.objects.filter(pk=self.device3.pk).invalidated_update(virtual_chassis=self.vc1, vc_position=3)
+        Device.objects.filter(pk=self.device2.pk).update(virtual_chassis=self.vc1, vc_position=2)
+        Device.objects.filter(pk=self.device3.pk).update(virtual_chassis=self.vc1, vc_position=3)
         self.vc2 = VirtualChassis.objects.create(master=self.device4, domain='test-domain-2')
-        Device.objects.filter(pk=self.device5.pk).invalidated_update(virtual_chassis=self.vc2, vc_position=2)
-        Device.objects.filter(pk=self.device6.pk).invalidated_update(virtual_chassis=self.vc2, vc_position=3)
+        Device.objects.filter(pk=self.device5.pk).update(virtual_chassis=self.vc2, vc_position=2)
+        Device.objects.filter(pk=self.device6.pk).update(virtual_chassis=self.vc2, vc_position=3)
 
     def test_get_virtualchassis(self):
 

+ 3 - 3
netbox/dcim/tests/test_views.py

@@ -442,11 +442,11 @@ class VirtualChassisTestCase(TestCase):
 
         # Create three VirtualChassis with two members each
         vc1 = VirtualChassis.objects.create(master=device1, domain='test-domain-1')
-        Device.objects.filter(pk=device2.pk).invalidated_update(virtual_chassis=vc1, vc_position=2)
+        Device.objects.filter(pk=device2.pk).update(virtual_chassis=vc1, vc_position=2)
         vc2 = VirtualChassis.objects.create(master=device3, domain='test-domain-2')
-        Device.objects.filter(pk=device4.pk).invalidated_update(virtual_chassis=vc2, vc_position=2)
+        Device.objects.filter(pk=device4.pk).update(virtual_chassis=vc2, vc_position=2)
         vc3 = VirtualChassis.objects.create(master=device5, domain='test-domain-3')
-        Device.objects.filter(pk=device6.pk).invalidated_update(virtual_chassis=vc3, vc_position=2)
+        Device.objects.filter(pk=device6.pk).update(virtual_chassis=vc3, vc_position=2)
 
     def test_virtualchassis_list(self):
 

+ 10 - 6
netbox/dcim/views.py

@@ -2108,7 +2108,10 @@ class VirtualChassisEditView(PermissionRequiredMixin, GetReturnURLMixin, View):
                 # Nullify the vc_position of each member first to allow reordering without raising an IntegrityError on
                 # duplicate positions. Then save each member instance.
                 members = formset.save(commit=False)
-                Device.objects.filter(pk__in=[m.pk for m in members]).invalidated_update(vc_position=None)
+                devices = Device.objects.filter(pk__in=[m.pk for m in members])
+                for device in devices:
+                    device.vc_position = None
+                    device.save()
                 for member in members:
                     member.save()
 
@@ -2209,11 +2212,12 @@ class VirtualChassisRemoveMemberView(PermissionRequiredMixin, GetReturnURLMixin,
 
         if form.is_valid():
 
-            Device.objects.filter(pk=device.pk).invalidated_update(
-                virtual_chassis=None,
-                vc_position=None,
-                vc_priority=None
-            )
+            devices = Device.objects.filter(pk=device.pk)
+            for device in devices:
+                device.virtual_chassis = None
+                device.vc_position = None
+                device.vc_priority = None
+                device.save()
 
             msg = 'Removed {} from virtual chassis {}'.format(device, device.virtual_chassis)
             messages.success(request, msg)