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: | 
