diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-18 13:06:19 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-18 13:06:19 +0100 |
commit | 1f32969d34b93f32a9bbbea80bfd4c6a487f6afd (patch) | |
tree | 51939709a38a80d41eb3e96064b0f8903c2183c3 | |
parent | d9d1884f0e1c8fbe65be2bd13b499cf217930efe (diff) | |
download | Ishtar-1f32969d34b93f32a9bbbea80bfd4c6a487f6afd.tar.bz2 Ishtar-1f32969d34b93f32a9bbbea80bfd4c6a487f6afd.zip |
WIP fix search (refs #5196)
-rw-r--r-- | ishtar_common/views_item.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 4247e224a..821a6635f 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1159,11 +1159,17 @@ def _manage_clean_search_field(dct, exclude=None): if "*" not in dct[k] or not k.endswith("__iexact"): continue 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"] = "" + continue if value.startswith("*"): value = value[1:] if value.endswith("*"): value = value[:-1] - base_key = k[: -len("__iexact")] if value: dct[base_key + "__icontains"] = value elif exclude is not None: @@ -2052,8 +2058,11 @@ def get_item( if "exc_and_reqs" in dct: exc_and_reqs += dct.pop("exc_and_reqs") - _manage_clean_search_field(dct, excluded_dct) + updated_excluded = {} + _manage_clean_search_field(dct, updated_excluded) _manage_clean_search_field(excluded_dct, dct) + if updated_excluded: + excluded_dct.update(updated_excluded) query = _construct_query(relation_types, dct, or_reqs, and_reqs) exc_query = None |