summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit77d3051ee44df36c37522af9f1c610a2d1fac163 (patch)
tree178913d0aba1a983e65d09f5f49b5b8ae7061a48
parentf50f22537d3588bd6dad72042775928eee6ba8dd (diff)
downloadIshtar-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.py4
-rw-r--r--ishtar_common/views_item.py10
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: