diff options
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index d19cbf7ff..d2e66ae69 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -592,6 +592,12 @@ def _manage_hierarchic_fields(dct, and_reqs): break +def _manage_clean_search_field(dct): + for k in dct: + # clean quoted search field + dct[k] = dct[k].replace(u'"', '') + + def _manage_relation_types(relation_types, dct, query, or_reqs): for rtype_prefix in relation_types: vals = list(relation_types[rtype_prefix]) @@ -633,6 +639,23 @@ def _manage_relation_types(relation_types, dct, query, or_reqs): def _contruct_query(relation_types, dct, or_reqs, and_reqs): + + # manage multi value not already managed + for key in dct.keys(): + if ";" in dct[key]: + print(key, dct[key]) + values = [v for v in dct[key].split(u';') if v] + if not values: + dct.pop(key) + continue + dct[key] = values[0] + if len(values) == 1: + continue + for v in values[1:]: + or_reqs.append( + (key, {key: v}) + ) + query = Q(**dct) for k, or_req in or_reqs: alt_dct = dct.copy() @@ -907,6 +930,9 @@ def get_item(model, func_name, default_name, extra_request_keys=[], extras = dct.pop('extras') + _manage_clean_search_field(dct) + _manage_clean_search_field(excluded_dct) + query = _contruct_query(relation_types, dct, or_reqs, and_reqs) exc_query = None if excluded_dct or exc_and_reqs or exc_or_reqs: |