diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-09-18 11:18:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-10-24 12:06:08 +0200 |
commit | d33cf24f1bdf116cb81aeb45804593058d9ebbdb (patch) | |
tree | d0bd953ebe547522206cb9a01ebe1b33dcaa89c4 /ishtar_common/views_item.py | |
parent | 985dfb92cbadf5f8fce43dfcd08fb44c3b2165f3 (diff) | |
download | Ishtar-d33cf24f1bdf116cb81aeb45804593058d9ebbdb.tar.bz2 Ishtar-d33cf24f1bdf116cb81aeb45804593058d9ebbdb.zip |
Display pined search on search input
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 58 |
1 files changed, 39 insertions, 19 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index cfb7a42c3..98dcd3d4c 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -440,7 +440,10 @@ def _search_manage_search_vector(model, dct, exc_dct, request_keys): if 'search_vector' not in dct: return dct, exc_dct - parentheses_groups = _parse_parentheses(dct['search_vector'].strip()) + # remove inside parenthesis + search_vector = \ + dct['search_vector'].replace(u'(', u'').replace(u')', u'').strip() + parentheses_groups = _parse_parentheses(search_vector) search_query, extra_dct, extra_exc_dct = _parse_parentheses_groups( parentheses_groups, request_keys) dct.update(extra_dct) @@ -960,7 +963,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], if 'basket-' in value: try: dct = {"basket__pk": - request.session[default_name].split('-')[-1]} + request.session[default_name].split('-')[-1]} pinned_search = unicode(FindBasket.objects.get( pk=dct["basket__pk"])) except FindBasket.DoesNotExist: @@ -968,26 +971,43 @@ def get_item(model, func_name, default_name, extra_request_keys=[], else: try: dct = {"pk": request.session[default_name]} - pinned_search = unicode(model._meta.verbose_name) \ - + u" - " + unicode( - model.objects.get(pk=dct["pk"])) + pinned_search = u'"{}"'.format( + model.objects.get(pk=dct["pk"]) + ) except model.DoesNotExist: pass elif dct == (my_base_request or {}): - # a parent item may be selected in the default menu - for name, key in my_relative_session_names: - if name in request.session and request.session[name] \ - and 'basket-' not in request.session[name] \ - and name in CURRENT_ITEM_KEYS_DICT: - up_model = CURRENT_ITEM_KEYS_DICT[name] - try: - dct.update({key: request.session[name]}) - pinned_search = unicode(up_model._meta.verbose_name) \ - + u" - " + unicode( - up_model.objects.get(pk=dct[key])) - break - except up_model.DoesNotExist: - pass + if not hasattr(model, 'UP_MODEL_QUERY'): + logger.warning( + "**WARN get_item**: - UP_MODEL_QUERY not defined for " + "'{}'".format(model.__class__)) + else: + # a parent item may be selected in the default menu + for name, key in my_relative_session_names: + if name in request.session and request.session[name] \ + and 'basket-' not in request.session[name] \ + and name in CURRENT_ITEM_KEYS_DICT: + up_model = CURRENT_ITEM_KEYS_DICT[name] + try: + dct.update({key: request.session[name]}) + up_item = up_model.objects.get(pk=dct[key]) + if up_item.short_class_name not in \ + model.UP_MODEL_QUERY: + logger.warning( + "**WARN get_item**: - {} not in " + "UP_MODEL_QUERY for {}'".format( + up_item.short_class_name, + model)) + else: + req_key, up_attr = model.UP_MODEL_QUERY[ + up_item.short_class_name] + pinned_search = u'{}="{}"'.format( + req_key, + getattr(up_item, up_attr) + ) + break + except up_model.DoesNotExist: + pass if (not dct or data_type == 'csv') \ and func_name in request.session: dct = request.session[func_name] |