diff options
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 |
commit | 7ca43bf432f679dab4a834e81ad5b708fbbb06b0 (patch) | |
tree | d74a3632bc612c9d4405f9865ac36b90e63515fa /ishtar_common/views_item.py | |
parent | 6e10770d2c121a88be0368c8764c47596bc884ba (diff) | |
download | Ishtar-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.py | 14 |
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) |