summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitc1dc72c74bda015673b2adc0d03d66dada52f4bf (patch)
treeef9f519a15ee905e29894ff0cb0ffba6dee68de8
parent6714d451f6990605730e2f8d22c14d492c8550da (diff)
downloadIshtar-c1dc72c74bda015673b2adc0d03d66dada52f4bf.tar.bz2
Ishtar-c1dc72c74bda015673b2adc0d03d66dada52f4bf.zip
Fix hierarchic town search
-rw-r--r--ishtar_common/views_item.py18
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)