diff options
| 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 |
| commit | f50f22537d3588bd6dad72042775928eee6ba8dd (patch) | |
| tree | 399993547854fcfaf002b4c71552f1bd98abf875 | |
| parent | 9090f6f58c9dddd7a01fc70c9e03e9481d151a48 (diff) | |
| download | Ishtar-f50f22537d3588bd6dad72042775928eee6ba8dd.tar.bz2 Ishtar-f50f22537d3588bd6dad72042775928eee6ba8dd.zip | |
🐛 search: do not cache result below 1000 - prevent query bug
| -rw-r--r-- | ishtar_common/views_item.py | 12 |
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) |
