From b477db008356cdaa231ff28a8378a335ea92a2b2 Mon Sep 17 00:00:00 2001 From: Jacob Felknor Date: Tue, 6 Jan 2026 11:56:11 -0700 Subject: [PATCH] update __getattr__ to prevent recursion errors with django_q2 tasks --- inventree/base.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/inventree/base.py b/inventree/base.py index 05d4206..b46418c 100644 --- a/inventree/base.py +++ b/inventree/base.py @@ -352,11 +352,17 @@ def __contains__(self, name): return name in self._data def __getattr__(self, name): + try: + data = object.__getattribute__(self, "_data") + except AttributeError: + # Appears to happen during pickling. Raise immediately to prevent recursion errors + raise AttributeError(name) - if name in self._data.keys(): - return self._data[name] - else: - return super().__getattribute__(name) + if name in data: + return data[name] + + # if we're in this block, there already wasn't a "normal" attribute with this name. Raise + raise AttributeError(name) def __getitem__(self, name): if name in self._data.keys():