From f50f22537d3588bd6dad72042775928eee6ba8dd Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 1 May 2026 16:24:48 +0200 Subject: 🐛 search: do not cache result below 1000 - prevent query bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/views_item.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index ada8420be..ad256915c 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -2925,7 +2925,7 @@ def get_item( cache_search = search_vector or pinned_search or any( 1 for k in request_items if k.startswith("columns[")) - q_cached_count = None + items_nb = 0 if cache_search: q_cached_count_attrs = { "content_type": ContentType.objects.get_for_model(model), @@ -2936,15 +2936,17 @@ def get_item( q_cached_count_attrs["ishtar_user_id"] = ishtaruser.user_ptr_id SearchCache = apps.get_model("ishtar_common", "SearchCache") q_cached_count = SearchCache.objects.filter(**q_cached_count_attrs) - if cache_search and q_cached_count.exists(): - items_nb = q_cached_count.all()[0].count - else: + if q_cached_count.exists(): + items_nb = q_cached_count.all()[0].count + if items_nb < 1000: + # do not use cache if search is below 1000 + # the search can made again try: q = items.values(*count_values) items_nb = q.count() or 0 except ProgrammingError: items_nb = 0 - if cache_search: + if cache_search and items_nb >= 1000: q_cached_count_attrs.pop("updated__gt") q_cached_count_attrs["count"] = items_nb SearchCache.objects.create(**q_cached_count_attrs) -- cgit v1.2.3