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