summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-07-03 18:11:28 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-07-03 18:19:22 +0200
commit7ca43bf432f679dab4a834e81ad5b708fbbb06b0 (patch)
treed74a3632bc612c9d4405f9865ac36b90e63515fa /ishtar_common/views_item.py
parent6e10770d2c121a88be0368c8764c47596bc884ba (diff)
downloadIshtar-7ca43bf432f679dab4a834e81ad5b708fbbb06b0.tar.bz2
Ishtar-7ca43bf432f679dab4a834e81ad5b708fbbb06b0.zip
🐛 Fix "*" search for text fields (refs #5325)
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r--ishtar_common/views_item.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index e2214d5dc..1cb0b80f2 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1209,7 +1209,7 @@ def _manage_hierarchic_fields(model, dct, and_reqs):
break
-def _manage_clean_search_field(dct, exclude=None):
+def _manage_clean_search_field(dct, exclude=None, reverse=False):
for k in list(dct.keys()):
# clean quoted search field
if type(dct[k]) != str:
@@ -1221,10 +1221,10 @@ def _manage_clean_search_field(dct, exclude=None):
value = dct.pop(k).strip()
base_key = k[:-len("__iexact")]
if value == "*":
- dct[base_key + "__isnull"] = False
- # TODO search
- #if exclude is not None:
- # exclude[base_key + "__exact"] = ""
+ if not reverse:
+ dct[base_key + "__isnull"] = False
+ if exclude is not None:
+ exclude[base_key + "__exact"] = ""
continue
if value.startswith("*"):
value = value[1:]
@@ -1301,6 +1301,8 @@ def _construct_query(relation_types, dct, or_reqs, and_reqs, excluded_relation=F
values = [v for v in dct[key].split(";") if v]
else:
values = [dct[key]]
+ if not values:
+ values = [""] # filter empty value
for value in values:
or_reqs.append((key, {key: value}))
dct = {}
@@ -2132,7 +2134,7 @@ def get_item(
updated_excluded = {}
_manage_clean_search_field(dct, updated_excluded)
- _manage_clean_search_field(excluded_dct, dct)
+ _manage_clean_search_field(excluded_dct, dct, reverse=True)
if updated_excluded:
excluded_dct.update(updated_excluded)