From 31eabc9beaec9a0d4fa32ded2995d5d40b65b419 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 15 Jul 2025 23:27:25 +1000 Subject: [PATCH] Change order of operations for MPTT delete (#10029) - Refresh first, before accessing data --- src/backend/InvenTree/InvenTree/models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/models.py b/src/backend/InvenTree/InvenTree/models.py index 998164b01f..2600bad2d8 100644 --- a/src/backend/InvenTree/InvenTree/models.py +++ b/src/backend/InvenTree/InvenTree/models.py @@ -568,9 +568,6 @@ class InvenTreeTree(MPTTModel): delete_children = kwargs.pop('delete_children', False) delete_items = kwargs.pop('delete_items', False) - tree_id = self.tree_id - parent = getattr(self, self.NODE_PARENT_KEY, None) - # Ensure that we have the latest version of the database object try: self.refresh_from_db() @@ -580,6 +577,9 @@ class InvenTreeTree(MPTTModel): 'Object %s of type %s no longer exists', str(self), str(self.__class__) ) + tree_id = self.tree_id + parent = getattr(self, self.NODE_PARENT_KEY, None) + # When deleting a top level node with multiple children, # we need to assign a new tree_id to each child node # otherwise they will all have the same tree_id (which is not allowed)