diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-13 17:31:13 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-13 17:31:13 +0200 |
commit | 778336ee33eea81c3ad7540813391508c0c049e5 (patch) | |
tree | 40e3e1ce072596d24f93f0e40a79631cf7a361d6 | |
parent | caba563d7d657698483abd90c11d4591478c1f90 (diff) | |
download | Ishtar-778336ee33eea81c3ad7540813391508c0c049e5.tar.bz2 Ishtar-778336ee33eea81c3ad7540813391508c0c049e5.zip |
Manage area search for finds
-rw-r--r-- | archaeological_finds/forms.py | 6 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 2 | ||||
-rw-r--r-- | ishtar_common/views_item.py | 17 |
3 files changed, 24 insertions, 1 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 41ecb5d31..2688a36d5 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -55,7 +55,7 @@ from ishtar_common.forms import CustomForm, CustomFormSearch, FormSet, \ ManageOldType, FieldType, IshtarForm, FormHeader from ishtar_common.forms_common import get_town_field from ishtar_common.models import valid_id, valid_ids, get_current_profile, \ - SpatialReferenceSystem + SpatialReferenceSystem, Area from ishtar_common.utils import convert_coordinates_to_point __all__ = [ @@ -423,6 +423,9 @@ class FindSelect(CustomForm, TableSelect): label=_(u"Code PATRIARCHE"), widget=OAWidget ) + base_finds__context_record__town__areas = forms.ChoiceField( + label=_(u"Areas"), choices=[] + ) archaeological_sites = forms.IntegerField( label=_("Archaeological site (attached to the operation)"), widget=widgets.JQueryAutoComplete( @@ -473,6 +476,7 @@ class FindSelect(CustomForm, TableSelect): FieldType('preservation_to_considers', models.TreatmentType), FieldType('integrities', models.IntegrityType), FieldType('remarkabilities', models.RemarkabilityType), + FieldType('base_finds__context_record__town__areas', Area), ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index bde4872a8..1da74b7a0 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -683,6 +683,8 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, 'base_finds__context_record__operation__archaeological_sites__pk', 'base_finds__context_record__operation__code_patriarche': 'base_finds__context_record__operation__code_patriarche', + 'base_finds__context_record__town__areas': + 'base_finds__context_record__town__areas__pk', 'datings__period': 'datings__period__pk', 'base_finds__find__description': 'base_finds__find__description__icontains', diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 2018f6f90..1d3d55a5c 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -549,6 +549,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('areas__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] + 'parent__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 + if req.endswith('town__pk') or req.endswith('towns__pk'): val = dct.pop(req) reqs = Q(**{req: val}) |