From 77d3051ee44df36c37522af9f1c610a2d1fac163 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 1 May 2026 16:42:14 +0200 Subject: 🐛 search cache: fix search cache query save - delete all after any change (too complex to handle otherwise) (refs #6732) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/models_common.py | 4 +--- ishtar_common/views_item.py | 10 +++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 4b0f1b160..573d4f8bf 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -5192,9 +5192,7 @@ class IdentifierItem(models.Model): # search cache clean SearchCache = apps.get_model("ishtar_common", "SearchCache") - SearchCache.objects.filter( - content_type=ContentType.objects.get_for_model(self.__class__) - ).delete() + SearchCache.objects.all().delete() def regenerate_all_ids(self, save=True): if getattr(self, "_prevent_loop", False): diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index ad256915c..7ad25876a 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -2700,6 +2700,7 @@ def get_item( and_reqs.append(q) # translate submited (and default) parameters to dict and queries + submited_search = "" # used by cache for k in request_keys: val = request_items.get(k) if not val: @@ -2715,6 +2716,7 @@ def get_item( pass req_keys = request_keys[k] + submited_search += f'{k}="{val}"' target = dct if k in query_parameters: if query_parameters[k].distinct_query: @@ -2922,14 +2924,16 @@ def get_item( search_vector = request_items.get("search_vector", "").strip() # cache only for GUI search + cache_search = not selected_ids and ( + submited_search or search_vector or pinned_search or any( + 1 for k in request_items if k.startswith("columns[")) + ) - cache_search = search_vector or pinned_search or any( - 1 for k in request_items if k.startswith("columns[")) items_nb = 0 if cache_search: q_cached_count_attrs = { "content_type": ContentType.objects.get_for_model(model), - "query": search_vector or pinned_search or "", + "query": (search_vector or pinned_search or "") + submited_search, "updated__gt": timezone.now() - datetime.timedelta(hours=24) } if own: -- cgit v1.2.3