diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-05-25 16:06:30 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-05-25 16:06:30 +0200 |
commit | 95f3bdd01e9adfe9e69da5a61ddb788f54d3a1e3 (patch) | |
tree | 467b157dea9c9e228d048b50a17524f877bf29bc /archaeological_context_records/forms.py | |
parent | ba056933f0f33d03729b0bb445f073d693e305e1 (diff) | |
download | Ishtar-95f3bdd01e9adfe9e69da5a61ddb788f54d3a1e3.tar.bz2 Ishtar-95f3bdd01e9adfe9e69da5a61ddb788f54d3a1e3.zip |
Search finds - context records: add missing search criterias for datings
Diffstat (limited to 'archaeological_context_records/forms.py')
-rw-r--r-- | archaeological_context_records/forms.py | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index 5ed9935e9..91c2fdf63 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -20,6 +20,7 @@ """ Context records forms definitions """ +from collections import OrderedDict from itertools import groupby from django import forms @@ -60,7 +61,50 @@ class OperationFormSelection(CustomForm, forms.Form): validators=[valid_id(Operation)]) -class RecordSelect(DocumentItemSelect): +class PeriodSelect(forms.Form): + datings__period = forms.ChoiceField(label=_("Dating - period"), + choices=[]) + datings__precise_dating = forms.CharField( + label=_("Dating - precise")) + datings__start_date__before = forms.IntegerField( + label=_("Dating - start date before")) + datings__start_date__after = forms.IntegerField( + label=_("Dating - start date after")) + datings__end_date__before = forms.IntegerField( + label=_("Dating - end date before")) + datings__end_date__after = forms.IntegerField( + label=_("Dating - end date after")) + datings__dating_type = forms.ChoiceField(label=_("Dating - dating type"), + choices=[]) + datings__quality = forms.ChoiceField(label=_("Dating - dating quality"), + choices=[]) + TYPES = [ + FieldType('datings__period', Period), + FieldType('datings__dating_type', models.DatingType), + FieldType('datings__quality', models.DatingQuality), + ] + PERIOD_FIELDS = ["datings__period", + "datings__precise_dating", + "datings__start_date__before", + "datings__start_date__after", + "datings__end_date__before", + "datings__end_date__after", + "datings__dating_type", + "datings__quality"] + + def _reorder_period_fields(self, insert_period_after): + fields = OrderedDict() + for key in self.fields: + if key in self.PERIOD_FIELDS: + continue + fields[key] = self.fields[key] + if key == insert_period_after: + for period_key in self.PERIOD_FIELDS: + fields[period_key] = self.fields[period_key] + self.fields = fields + + +class RecordSelect(DocumentItemSelect, PeriodSelect): _model = models.ContextRecord form_admin_name = _(u"Context record - 001 - Search") form_slug = "contextrecord-001-search" @@ -87,20 +131,22 @@ class RecordSelect(DocumentItemSelect): validators=[valid_id(ArchaeologicalSite)]) ope_relation_types = forms.ChoiceField( label=_(u"Search within related operations"), choices=[]) - datings__period = forms.ChoiceField(label=_(u"Period"), choices=[]) unit = forms.ChoiceField(label=_(u"Unit type"), choices=[]) parcel = forms.CharField(label=_(u"Parcel")) cr_relation_types = forms.ChoiceField( label=_(u"Search within relations"), choices=[]) - TYPES = [ - FieldType('datings__period', Period), + TYPES = PeriodSelect.TYPES + [ FieldType('unit', models.Unit), FieldType('cr_relation_types', models.RelationType), FieldType('ope_relation_types', OpeRelationType), ] SITE_KEYS = {"archaeological_site": None} + def __init__(self, *args, **kwargs): + super(RecordSelect, self).__init__(*args, **kwargs) + self._reorder_period_fields("unit") + def get_input_ids(self): ids = super(RecordSelect, self).get_input_ids() if 'cr_relation_types' in ids: @@ -337,6 +383,8 @@ class DatingForm(ManageOldType, forms.Form): quality = forms.ChoiceField(label=_("Quality"), required=False, choices=[]) dating_type = forms.ChoiceField(label=_("Dating type"), required=False, choices=[]) + precise_dating = forms.CharField(label=_("Precise dating"), + required=False) TYPES = [ FieldType('dating_type', models.DatingType), |