diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-16 12:48:35 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-10-16 12:48:35 +0200 |
commit | aaccdce8e7ebe6bc3a14e180c765a00dfee33991 (patch) | |
tree | a70ed54803f98a8f35b05df3eb761f690ec85530 /ishtar_common/views.py | |
parent | 8a003f0a6e02f298745ec6dc62cf1204bfb9dc33 (diff) | |
download | Ishtar-aaccdce8e7ebe6bc3a14e180c765a00dfee33991.tar.bz2 Ishtar-aaccdce8e7ebe6bc3a14e180c765a00dfee33991.zip |
Towns relationship: include related towns to searches
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 6652ba6a9..b8350c62a 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -815,6 +815,23 @@ def get_item(model, func_name, default_name, extra_request_keys=[], dct.pop(k) # manage hierarchic conditions for req in dct.copy(): + if req.endswith('town__pk') or req.endswith('towns__pk'): + val = dct.pop(req) + reqs = Q(**{req: val}) + base_req = req[:-2] + '__' + req = base_req[:] + for idx in range(HIERARCHIC_LEVELS): + req = req[:-2] + 'parents__pk' + q = Q(**{req: val}) + reqs |= q + req = base_req[:] + for idx in range(HIERARCHIC_LEVELS): + req = req[:-2] + 'children__pk' + q = Q(**{req: val}) + reqs |= q + and_reqs.append(reqs) + continue + for k_hr in HIERARCHIC_FIELDS: if type(req) in (list, tuple): val = dct.pop(req) @@ -830,7 +847,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], val = dct.pop(req) reqs = Q(**{req: val}) req = req[:-2] + '__' - for idx in xrange(HIERARCHIC_LEVELS): + for idx in range(HIERARCHIC_LEVELS): req = req[:-2] + 'parent__pk' q = Q(**{req: val}) reqs |= q |