diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-03 17:30:58 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-03 17:30:58 +0200 | 
| commit | 95c2cf33370ac73cfab6963d54d2a5bc8728d7a8 (patch) | |
| tree | a9d415d60bb689c6af40c4427d40c9ca8177f3ca /archaeological_operations/forms.py | |
| parent | 4f4ea768d9d72b96bcf826c525ed1b066191b11b (diff) | |
| parent | c50c0e4e5701b9926fbdad82b4ae54964a9283bb (diff) | |
| download | Ishtar-95c2cf33370ac73cfab6963d54d2a5bc8728d7a8.tar.bz2 Ishtar-95c2cf33370ac73cfab6963d54d2a5bc8728d7a8.zip | |
Merge branch 'master' into v0.9
Diffstat (limited to 'archaeological_operations/forms.py')
| -rw-r--r-- | archaeological_operations/forms.py | 95 | 
1 files changed, 72 insertions, 23 deletions
| diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 84af8f287..6ef3d5a21 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -235,15 +235,26 @@ class ParcelFormSet(FormSet):                  values[number] = {}              values[number][field] = value +            if field == 'parcel': +                if not value: +                    continue +                try: +                    parcel = models.Parcel.objects.get(pk=value) +                except models.Parcel.DoesNotExist: +                    continue +                ordering_keys[number] = [ +                    parcel.town, parcel.year, parcel.section, +                    parcel.parcel_number] +                continue              if number not in ordering_keys:                  ordering_keys[number] = ['', '', '', '']              if field == 'town':                  ordering_keys[number][0] = value -            if field == 'year': +            elif field == 'year':                  ordering_keys[number][1] = value -            if field == 'section': +            elif field == 'section':                  ordering_keys[number][2] = value -            if field == 'parcel_number': +            elif field == 'parcel_number':                  ordering_keys[number][3] = value          reverse_ordering_keys = {} @@ -365,6 +376,17 @@ class RecordRelationsForm(forms.Form):               for rel, opes in nc])          return rendered +    def clean(self): +        cleaned_data = self.cleaned_data +        if (cleaned_data.get('relation_type', None) and +                not cleaned_data.get('right_record', None)): +            raise forms.ValidationError(_(u"You should select an operation.")) +        if (not cleaned_data.get('relation_type', None) and +                cleaned_data.get('right_record', None)): +            raise forms.ValidationError( +                _(u"You should select a relation type.")) +        return cleaned_data +      @classmethod      def get_formated_datas(cls, cleaned_datas):          result, current, deleted = [], [], [] @@ -466,12 +488,12 @@ class OperationSelect(TableSelect):      report_processing = forms.ChoiceField(label=_(u"Report processing"),                                            choices=[])      virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation")) -    # archaeological_sites = forms.IntegerField( -    #     label=_("Archaelogical site"), -    #     widget=widgets.JQueryAutoComplete( -    #         reverse_lazy('autocomplete-archaeologicalsite'), -    #         associated_model=models.ArchaeologicalSite), -    #     validators=[valid_id(models.ArchaeologicalSite)]) +    archaeological_sites = forms.IntegerField( +        label=_("Archaelogical site"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-archaeologicalsite'), +            associated_model=models.ArchaeologicalSite), +        validators=[valid_id(models.ArchaeologicalSite)])      history_creator = forms.IntegerField(          label=_(u"Created by"),          widget=widgets.JQueryAutoComplete( @@ -670,7 +692,7 @@ class OperationFormGeneral(forms.Form):                           'operator': Organization,                           'operation_type': models.OperationType,                           'report_processing': models.ReportState, -                         'archaeological_site': models.ArchaeologicalSite} +                         }      pk = forms.IntegerField(required=False, widget=forms.HiddenInput)      if settings.COUNTRY == 'fr':          code_patriarche = forms.IntegerField(label=u"Code PATRIARCHE", @@ -683,10 +705,6 @@ class OperationFormGeneral(forms.Form):                                initial=lambda: datetime.datetime.now().year,                                validators=[validators.MinValueValidator(1900),                                            validators.MaxValueValidator(2100)]) -    operation_code = forms.IntegerField( -        label=_(u"Operation code"), -        initial=models.Operation.get_available_operation_code, -        widget=OperationCodeInput(attrs={'readonly': 'readonly'}))      scientist = forms.IntegerField(          label=_("Head scientist"),          widget=widgets.JQueryAutoComplete( @@ -719,9 +737,9 @@ class OperationFormGeneral(forms.Form):          label=_(u"Total surface (m2)"),          validators=[validators.MinValueValidator(0),                      validators.MaxValueValidator(999999999)]) -    archaeological_site = widgets.MultipleAutocompleteField( -        model=models.ArchaeologicalSite, -        label=_("Associated archaeological sites"), new=True, required=False) +    # archaeological_site = widgets.MultipleAutocompleteField( +    #     model=models.ArchaeologicalSite, +    #     label=_("Associated archaeological sites"), new=True, required=False)      start_date = forms.DateField(          label=_(u"Start date"), required=False, widget=widgets.JQueryDate)      excavation_end_date = forms.DateField( @@ -768,10 +786,12 @@ class OperationFormGeneral(forms.Form):              models.ReportState.get_help()          self.fields['record_quality'].choices = \              [('', '--')] + list(models.QUALITY) -        # data POSTED -        if kwargs and kwargs['data'] \ -           and 'readonly' in self.fields['operation_code'].widget.attrs: -            self.fields['operation_code'].widget.attrs.pop('readonly') +        if 'operation_code' in self.fields: +            self.fields.keyOrder = list(self.fields.keyOrder) +            self.fields.keyOrder.pop(self.fields.keyOrder.index( +                'operation_code')) +            self.fields.keyOrder.insert(self.fields.keyOrder.index('year'), +                                        'operation_code')      def clean(self):          cleaned_data = self.cleaned_data @@ -787,7 +807,9 @@ class OperationFormGeneral(forms.Form):                      _(u"The excavation end date cannot be before the start "                        u"date."))          year = self.cleaned_data.get("year") -        operation_code = cleaned_data.get("operation_code") +        operation_code = cleaned_data.get("operation_code", None) +        if not operation_code: +            return self.cleaned_data          ops = models.Operation.objects.filter(year=year,                                                operation_code=operation_code)          # manage unique operation ID @@ -917,6 +939,32 @@ SelectedParcelGeneralFormSet = formset_factory(ParcelForm, can_delete=True,                                                 formset=ParcelFormSet)  SelectedParcelGeneralFormSet.form_label = _("Parcels") +""" +class SelectedParcelFormSet(forms.Form): +    form_label = _("Parcels") +    base_model = 'parcel' +    associated_models = {'parcel': models.Parcel} +    parcel = forms.MultipleChoiceField( +        label=_("Parcel"), required=False, choices=[], +        widget=forms.CheckboxSelectMultiple) + +    def __init__(self, *args, **kwargs): +        parcels = None +        print(kwargs) +        if 'data' in kwargs and 'PARCELS' in kwargs['data']: +            parcels = kwargs['data']['PARCELS'] +            # clean data if not "real" data +            prefix_value = kwargs['prefix'] + '-parcel' +            if not [k for k in kwargs['data'].keys() +                    if k.startswith(prefix_value) and kwargs['data'][k]]: +                kwargs['data'] = None +                if 'files' in kwargs: +                    kwargs.pop('files') +        super(SelectedParcelFormSet, self).__init__(*args, **kwargs) +        if parcels: +            self.fields['parcel'].choices = [('', '--')] + parcels +""" +  class RemainForm(forms.Form):      form_label = _("Remain types") @@ -1000,7 +1048,8 @@ class ArchaeologicalSiteBasicForm(forms.Form):              reverse_lazy('autocomplete-archaeologicalsite'),              associated_model=models.ArchaeologicalSite,              new=True), -        validators=[valid_id(models.ArchaeologicalSite)]) +        validators=[valid_id(models.ArchaeologicalSite)], +        required=False)  ArchaeologicalSiteFormSet = formset_factory(ArchaeologicalSiteBasicForm, | 
