diff options
-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}) |