diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-05-01 16:42:14 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-05-01 17:43:19 +0200 |
| commit | 77d3051ee44df36c37522af9f1c610a2d1fac163 (patch) | |
| tree | 178913d0aba1a983e65d09f5f49b5b8ae7061a48 | |
| parent | f50f22537d3588bd6dad72042775928eee6ba8dd (diff) | |
| download | Ishtar-77d3051ee44df36c37522af9f1c610a2d1fac163.tar.bz2 Ishtar-77d3051ee44df36c37522af9f1c610a2d1fac163.zip | |
🐛 search cache: fix search cache query save - delete all after any change (too complex to handle otherwise) (refs #6732)
| -rw-r--r-- | ishtar_common/models_common.py | 4 | ||||
| -rw-r--r-- | 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: |
