diff options
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] | 
