summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-01 16:24:48 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-01 16:24:48 +0200
commitf50f22537d3588bd6dad72042775928eee6ba8dd (patch)
tree399993547854fcfaf002b4c71552f1bd98abf875
parent9090f6f58c9dddd7a01fc70c9e03e9481d151a48 (diff)
downloadIshtar-f50f22537d3588bd6dad72042775928eee6ba8dd.tar.bz2
Ishtar-f50f22537d3588bd6dad72042775928eee6ba8dd.zip
🐛 search: do not cache result below 1000 - prevent query bug
-rw-r--r--ishtar_common/views_item.py12
1 files 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)