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 | 6ca01e3dbea08b018b6f21ac2d149e101f91a9c4 (patch) | |
| tree | 467b157dea9c9e228d048b50a17524f877bf29bc /archaeological_context_records/forms.py | |
| parent | 07437a1b608b6dc9b508ae0a5e4b033431795745 (diff) | |
| download | Ishtar-6ca01e3dbea08b018b6f21ac2d149e101f91a9c4.tar.bz2 Ishtar-6ca01e3dbea08b018b6f21ac2d149e101f91a9c4.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), | 
