From 46b8c0e2302fbd86a68928f92ae72ae6ba894fae Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 17 Oct 2023 10:01:25 -0400 Subject: [PATCH] Misc cleanup --- netbox/utilities/counters.py | 5 ++--- netbox/utilities/tests/test_counters.py | 12 ++---------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/netbox/utilities/counters.py b/netbox/utilities/counters.py index 89e068aec..0ee2606db 100644 --- a/netbox/utilities/counters.py +++ b/netbox/utilities/counters.py @@ -62,7 +62,7 @@ def post_save_receiver(sender, instance, created, **kwargs): update_counter(parent_model, new_pk, counter_name, 1) -def post_delete_receiver(sender, instance, **kwargs): +def post_delete_receiver(sender, instance, origin, **kwargs): """ Update counter fields on related objects when a TrackingModelMixin subclass is deleted. """ @@ -72,8 +72,7 @@ def post_delete_receiver(sender, instance, **kwargs): # Decrement the parent's counter by one if parent_pk is not None: - # MPTT sends two delete signals if child element so guard against multiple decrements - origin = kwargs.get('origin') + # MPTT sends two delete signals for child elements so guard against multiple decrements if not origin or origin == instance: update_counter(parent_model, parent_pk, counter_name, -1) diff --git a/netbox/utilities/tests/test_counters.py b/netbox/utilities/tests/test_counters.py index 54cda1368..014c758e9 100644 --- a/netbox/utilities/tests/test_counters.py +++ b/netbox/utilities/tests/test_counters.py @@ -87,11 +87,12 @@ class CountersTest(TestCase): def test_mptt_child_delete(self): device1, device2 = Device.objects.all() inventory_item1 = InventoryItem.objects.create(device=device1, name='Inventory Item 1') - inventory_item2 = InventoryItem.objects.create(device=device1, name='Inventory Item 1', parent=inventory_item1) + inventory_item2 = InventoryItem.objects.create(device=device1, name='Inventory Item 2', parent=inventory_item1) device1.refresh_from_db() self.assertEqual(device1.inventory_item_count, 2) # Setup bulk_delete for the inventory items + self.add_permissions('dcim.delete_inventoryitem') pk_list = device1.inventoryitems.values_list('pk', flat=True) data = { 'pk': pk_list, @@ -99,15 +100,6 @@ class CountersTest(TestCase): '_confirm': True, # Form button } - # Assign unconstrained permission - obj_perm = ObjectPermission( - name='Test permission', - actions=['delete'] - ) - obj_perm.save() - obj_perm.users.add(self.user.pk) - obj_perm.object_types.add(ContentType.objects.get_for_model(InventoryItem)) - # Try POST with model-level permission self.client.post(reverse("dcim:inventoryitem_bulk_delete"), data) device1.refresh_from_db()