summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/forms.py6
-rw-r--r--archaeological_finds/models_finds.py2
-rw-r--r--ishtar_common/views_item.py17
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})