diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-08-15 13:10:47 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-08-15 13:10:47 +0200 |
commit | c1dc72c74bda015673b2adc0d03d66dada52f4bf (patch) | |
tree | ef9f519a15ee905e29894ff0cb0ffba6dee68de8 | |
parent | 6714d451f6990605730e2f8d22c14d492c8550da (diff) | |
download | Ishtar-c1dc72c74bda015673b2adc0d03d66dada52f4bf.tar.bz2 Ishtar-c1dc72c74bda015673b2adc0d03d66dada52f4bf.zip |
Fix hierarchic town search
-rw-r--r-- | ishtar_common/views_item.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index d00256877..b53beab90 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -558,18 +558,26 @@ def _manage_hierarchic_fields(dct, and_reqs): and_reqs.append(reqs) continue - if req.endswith('town__pk') or req.endswith('towns__pk'): + if req.endswith('town__pk') or req.endswith('towns__pk') \ + or req.endswith('town__cached_label__iexact') \ + or req.endswith('towns__cached_label__iexact'): + + if req.endswith('pk'): + suffix = 'pk' + elif req.endswith('cached_label__iexact'): + suffix = 'cached_label__iexact' + else: + continue val = _clean_type_val(dct.pop(req)) reqs = Q(**{req: val}) - base_req = req[:-2] + '__' - req = base_req[:] + base_req = req[:] for idx in range(HIERARCHIC_LEVELS): - req = req[:-2] + 'parents__pk' + req = req[:-(len(suffix))] + 'parents__' + suffix q = Q(**{req: val}) reqs |= q req = base_req[:] for idx in range(HIERARCHIC_LEVELS): - req = req[:-2] + 'children__pk' + req = req[:-(len(suffix))] + 'children__' + suffix q = Q(**{req: val}) reqs |= q and_reqs.append(reqs) |