diff options
Diffstat (limited to 'archaeological_operations/forms.py')
| -rw-r--r-- | archaeological_operations/forms.py | 49 | 
1 files changed, 26 insertions, 23 deletions
| diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 76d7055d9..2754f2d1a 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -103,6 +103,8 @@ class ParcelForm(forms.Form):          return self.cleaned_data  class ParcelSelectionForm(forms.Form): +    _town = forms.ChoiceField(label=_("Town"), choices=(), required=False, +                             validators=[valid_id(models.Town)])      _parcel_selection = forms.CharField(label=_(u"Full text input"),                       widget=SelectParcelWidget(attrs={'class':'parcel-select'}),                       max_length=100, help_text=_(u"example: \"2013: XD:1 to "\ @@ -118,6 +120,13 @@ class ParcelFormSet(FormSet):          if self.forms[0].__class__.__name__ == 'ParcelForm':              self.selection_form = ParcelSelectionForm()              self.extra_form = self.selection_form +            # copy town choices +            town_choices = self.forms[0].fields['town'].choices[:] +            if town_choices and not town_choices[0][0]: +                # remove empty +                town_choices = town_choices[1:] +            if town_choices: +                self.selection_form.fields['_town'].choices = town_choices      def as_table(self):          # add dynamic widget @@ -142,25 +151,14 @@ class ParcelFormSet(FormSet):      def clean(self):          # manage parcel selection -        last_town, parcels = None, [] -        if hasattr(self, 'cleaned_data') and self.cleaned_data: -            for parcel in reversed(self.cleaned_data): -                if parcel.get('town'): -                    last_town = parcel.get('town') -                    break -        if not last_town and 'town' in self.forms[0].fields.keys(): -            towns = self.forms[0].fields['town'].choices -            if towns: -                towns.pop(0) # remove first empty -            if towns: -                last_town = towns[0][0] +        selected_town, parcels = None, []          if self.data.get('_parcel_selection'):              parcels = parse_parcels(self.data['_parcel_selection']) -            if last_town: -                for idx, parcel in enumerate(parcels): -                    parcel['town'] = last_town -                    parcel['DELETE'] = False -                    parcels[idx] = parcel +            selected_town = self.data.get('_town') +            for idx, parcel in enumerate(parcels): +                parcel['town'] = selected_town +                parcel['DELETE'] = False +                parcels[idx] = parcel              c_max = self.total_form_count()              # pop the last extra form              extra_form = self.forms.pop() @@ -188,6 +186,8 @@ ParcelFormSet = formset_factory(ParcelForm, can_delete=True,  ParcelFormSet.form_label = _(u"Parcels")  class OperationSelect(TableSelect): +    year = forms.IntegerField(label=_("Year")) +    operation_code = forms.IntegerField(label=_(u"Numeric reference"))      common_name = forms.CharField(label=_(u"Name (full text search)"),                                    max_length=30)      if settings.COUNTRY == 'fr': @@ -203,7 +203,6 @@ class OperationSelect(TableSelect):          associated_model=Person), label=_(u"In charge"))      remains = forms.ChoiceField(label=_(u"Remains"), choices=[])      periods = forms.ChoiceField(label=_(u"Periods"), choices=[]) -    year = forms.IntegerField(label=_("Year"))      start_before = forms.DateField(label=_(u"Started before"),                                     widget=widgets.JQueryDate)      start_after = forms.DateField(label=_(u"Started after"), @@ -591,8 +590,13 @@ OperationSourceFormSelection = get_form_selection(  ################################################  class AdministrativeActOpeSelect(TableSelect): -    operation__towns = get_town_field() +    year = forms.IntegerField(label=_("Year")) +    index = forms.IntegerField(label=_("Index")) +    if settings.COUNTRY == 'fr': +        ref_sra = forms.CharField(label=u"Référence SRA", +                                  max_length=15)      act_type = forms.ChoiceField(label=_("Act type"), choices=[]) +    operation__towns = get_town_field()      def __init__(self, *args, **kwargs):          super(AdministrativeActOpeSelect, self).__init__(*args, **kwargs) @@ -684,13 +688,12 @@ class GenerateDocForm(forms.Form):          self.fields['doc_generation'].choices = [('', u'-'*9)] + \                  [(choice.pk , unicode(choice)) for choice in choices] -class AdministrativeActRegisterSelect(TableSelect): -    signature_date__year = forms.IntegerField(label=_(u"Year")) -    act_type = forms.ChoiceField(label=_("Act type"), choices=[]) +class AdministrativeActRegisterSelect(AdministrativeActOpeSelect):      def __init__(self, *args, **kwargs):          super(AdministrativeActRegisterSelect, self).__init__(*args, **kwargs) -        self.fields['act_type'].choices = models.ActType.get_types() +        self.fields['act_type'].choices = models.ActType.get_types( +                                                           dct={'indexed':True})          self.fields['act_type'].help_text = models.ActType.get_help()  class AdministrativeActRegisterFormSelection(forms.Form): | 
