From 3adbd561ced57cb9c950af2d6d7d25f57f8799e0 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 19 Mar 2025 11:54:38 +0100 Subject: 🚑️ fix huge performance problems on permissions when too many items are attached MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'ishtar_common/utils.py') diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index e69ef0290..666e05bd9 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -530,12 +530,17 @@ class OwnPerms: return [] @classmethod - def _construct_query_own(cls, prefix, dct_list): + def _construct_query_own(cls, model, prefix, dct_list): q = None for subquery_dict in dct_list: subquery = None for k in subquery_dict: subsubquery = Q(**{prefix + k: subquery_dict[k]}) + # slice in multiple queries in order to prevent too complicated queries + subsubquery = Q(id__in=( + model.objects.filter(subsubquery).values_list("id", flat=True) + ) + ) if subquery: subquery |= subsubquery else: -- cgit v1.2.3