diff options
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 521 |
1 files changed, 300 insertions, 221 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 27f8bae08..9a8380367 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -99,16 +99,16 @@ class ParcelForm(forms.Form): """Check required fields""" if any(self.errors): return - if not self.cleaned_data or (DELETION_FIELD_NAME in self.cleaned_data \ + if not self.cleaned_data or (DELETION_FIELD_NAME in self.cleaned_data and self.cleaned_data[DELETION_FIELD_NAME]): return if not self.cleaned_data.get('parcel_number') and \ self.cleaned_data.get('section') != 'DP': return {} for key in ('town', 'section'): - if not key in self.cleaned_data or not self.cleaned_data[key]: - raise forms.ValidationError(_(u"Town section and parcel number " - u"fields are required.")) + if key not in self.cleaned_data or not self.cleaned_data[key]: + raise forms.ValidationError(_(u"Town section and parcel number" + u" fields are required.")) return self.cleaned_data @classmethod @@ -157,7 +157,7 @@ class ParcelForm(forms.Form): @classmethod def _format_parcels(cls, parcels): - sortkeyfn = lambda s:(s[0], s[1], s[2]) + sortkeyfn = lambda s: (s[0], s[1], s[2]) parcels = sorted(parcels, key=sortkeyfn) grouped = [] for keys, parcel_grp in groupby(parcels, key=sortkeyfn): @@ -165,12 +165,12 @@ class ParcelForm(forms.Form): keys.append([gp[-1] for gp in parcel_grp]) grouped.append(keys) res = '' - c_town, c_section, c_year = '', '', '' + c_town, c_section = '', '' for idx, parcel in enumerate(grouped): town, year, section, parcel_numbers = parcel if c_town != town: c_town = town - c_section, c_year = '', '' + c_section = '' if idx: res += " ; " res += town + u' : ' @@ -183,14 +183,17 @@ class ParcelForm(forms.Form): res += " (%s)" % unicode(year) return res + 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 "\ - u"13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""), - required=False) + validators=[valid_id(models.Town)]) + _parcel_selection = forms.CharField( + label=_(u"Full text input"), + widget=SelectParcelWidget(attrs={'class': 'parcel-select'}), + help_text=_(u"example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or " + u"\"AB:24,AC:42\""), + max_length=100, required=False) + class ParcelFormSet(FormSet): SELECTION_FORM = ParcelSelectionForm @@ -213,8 +216,9 @@ class ParcelFormSet(FormSet): def rearrange_parcels(self, parcels): """ - Simple database ordering is not possible as a numeric ordering of parcel - number have to be made but with parcel number not strictly numeric + Simple database ordering is not possible as a numeric ordering of + parcel number have to be made but with parcel number not strictly + numeric Very complicated for a simple thing :( """ prefix, ordering_keys, values = '', {}, {} @@ -250,7 +254,7 @@ class ParcelFormSet(FormSet): reverse_ordering_keys[tuple(ordering_keys[number])] = number for new_idx, keys in enumerate(sorted(reverse_ordering_keys.keys(), - key=self._parcel_sorting)): + key=self._parcel_sorting)): number = reverse_ordering_keys[keys] prefx = '%s-%d-' % (prefix, new_idx) for field in values[number]: @@ -310,14 +314,15 @@ class ParcelFormSet(FormSet): for idx, parcel in enumerate(parcels): form = self._construct_form(idx + c_max) for k in parcel: - self.data[form.prefix+'-'+k] = parcel[k] + self.data[form.prefix + '-' + k] = parcel[k] # reconstruct with correct binded data form = self._construct_form(idx + c_max) form.cleaned_data = parcel self.forms.append(form) self._errors.append(None) self.forms.append(extra_form) - self.data[self.prefix+'-'+TOTAL_FORM_COUNT] = c_max + len(parcels) + self.data[self.prefix + '-' + TOTAL_FORM_COUNT] = c_max + \ + len(parcels) self.management_form.data = self.data self.management_form.is_valid() # Checks that no parcels are duplicated. @@ -332,10 +337,11 @@ ParcelFormSet.form_label = _(u"Parcels") SRA_AGENT, created = PersonType.objects.get_or_create(txt_idx='sra_agent') HEAD_SCIENTIST, created = PersonType.objects.get_or_create( - txt_idx='head_scientist') + txt_idx='head_scientist') OPERATOR, created = OrganizationType.objects.get_or_create(txt_idx='operator') + class OperationSelect(TableSelect): year = forms.IntegerField(label=_("Year")) operation_code = forms.IntegerField(label=_(u"Numeric reference")) @@ -347,19 +353,26 @@ class OperationSelect(TableSelect): operation_type = forms.ChoiceField(label=_(u"Operation type"), choices=[]) scientist = forms.IntegerField( - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', - args=["_".join( - [unicode(HEAD_SCIENTIST.pk), unicode(SRA_AGENT.pk)])]), - associated_model=Person), label=_(u"Scientist in charge")) + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=["_".join([unicode(HEAD_SCIENTIST.pk), + unicode(SRA_AGENT.pk)])]), + associated_model=Person), + label=_(u"Scientist in charge")) in_charge = forms.IntegerField( - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', - args=["_".join( - [unicode(PersonType.objects.get(txt_idx='sra_agent').pk)])]), - associated_model=Person), label=_(u"In charge")) - operator = forms.IntegerField(label=_("Operator"), - widget=widgets.JQueryAutoComplete(reverse_lazy( - 'autocomplete-organization', args=[OPERATOR.pk]), - associated_model=Organization), + widget=widgets.JQueryAutoComplete( + reverse_lazy( + 'autocomplete-person', + args=["_".join( + [unicode(PersonType.objects.get(txt_idx='sra_agent').pk)])] + ), + associated_model=Person), + label=_(u"In charge")) + operator = forms.IntegerField( + label=_("Operator"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-organization', args=[OPERATOR.pk]), + associated_model=Organization), validators=[valid_id(Organization)]) remains = forms.ChoiceField(label=_(u"Remains"), choices=[]) periods = forms.ChoiceField(label=_(u"Periods"), choices=[]) @@ -374,17 +387,18 @@ class OperationSelect(TableSelect): parcel = ParcelField(label=_("Parcel (section/number)")) end_date = forms.NullBooleanField(label=_(u"Is open?")) history_creator = forms.IntegerField( - label=_(u"Created by"), - widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-person', - args=['0', 'user']), - associated_model=Person), - validators=[valid_id(Person)]) + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) def __init__(self, *args, **kwargs): super(OperationSelect, self).__init__(*args, **kwargs) - self.fields['operation_type'].choices = models.OperationType.get_types() - self.fields['operation_type'].help_text = models.OperationType.get_help() + self.fields['operation_type'].choices = \ + models.OperationType.get_types() + self.fields['operation_type'].help_text = \ + models.OperationType.get_help() self.fields['remains'].choices = models.RemainType.get_types() self.fields['remains'].help_text = models.RemainType.get_help() self.fields['periods'].choices = models.Period.get_types() @@ -397,15 +411,17 @@ class OperationSelect(TableSelect): ids.append('parcel_1') return ids + class OperationFormSelection(forms.Form): form_label = _(u"Operation search") - associated_models = {'pk':models.Operation} - currents = {'pk':models.Operation} - pk = forms.IntegerField(label="", required=False, - widget=widgets.JQueryJqGrid(reverse_lazy('get-operation'), - OperationSelect, models.Operation, - source_full=reverse_lazy('get-operation-full')), - validators=[valid_id(models.Operation)]) + associated_models = {'pk': models.Operation} + currents = {'pk': models.Operation} + pk = forms.IntegerField( + label="", required=False, + widget=widgets.JQueryJqGrid( + reverse_lazy('get-operation'), OperationSelect, models.Operation, + source_full=reverse_lazy('get-operation-full')), + validators=[valid_id(models.Operation)]) def clean(self): cleaned_data = self.cleaned_data @@ -413,6 +429,7 @@ class OperationFormSelection(forms.Form): raise forms.ValidationError(_(u"You should select an operation.")) return cleaned_data + class OperationCodeInput(forms.TextInput): """Manage auto complete when changing year in form""" def render(self, *args, **kwargs): @@ -433,38 +450,42 @@ class OperationCodeInput(forms.TextInput): } } $(document).ready(initialyse_operation_code()); - //--></script>\n""" % {'base_name':base_name, 'name':name, - 'url':reverse_lazy('get_available_operation_code')} + //--></script>\n""" % { + 'base_name': base_name, 'name': name, + 'url': reverse_lazy('get_available_operation_code')} return mark_safe(rendered + js) if FILES_AVAILABLE: class OperationFormFileChoice(forms.Form): form_label = _(u"Associated file") - associated_models = {'associated_file':File,} - currents = {'associated_file':File} - associated_file = forms.IntegerField(label=_(u"Archaelogical file"), - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'), - associated_model=File), - validators=[valid_id(File)], required=False) + associated_models = {'associated_file': File, } + currents = {'associated_file': File} + associated_file = forms.IntegerField( + label=_(u"Archaelogical file"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-file'), associated_model=File), + validators=[valid_id(File)], required=False) -SLICING = (("month",_(u"months")), ('year',_(u"years")),) +SLICING = (("month", _(u"months")), ('year', _(u"years")),) -DATE_SOURCE = (('creation',_(u"Creation date")), - ("start",_(u"Start of field work"))) +DATE_SOURCE = (('creation', _(u"Creation date")), + ("start", _(u"Start of field work"))) PREVENTIVE_RESARCH = (('all', _('All')), ('preventive', _(u"Preventive")), ('research', _(u"Research")),) + class DashboardForm(forms.Form): slicing = forms.ChoiceField(label=_("Slicing"), choices=SLICING, - required=False) - department_detail = forms.BooleanField(label=_("Department detail"), - required=False) - date_source = forms.ChoiceField(label=_("Date get from"), - choices=DATE_SOURCE, required=False) - preventive_research = forms.ChoiceField(label=_("Preventive/Research"), - choices=PREVENTIVE_RESARCH, required=False) + required=False) + department_detail = forms.BooleanField( + label=_("Department detail"), required=False) + date_source = forms.ChoiceField( + label=_("Date get from"), choices=DATE_SOURCE, required=False) + preventive_research = forms.ChoiceField( + label=_("Preventive/Research"), choices=PREVENTIVE_RESARCH, + required=False) operation_type = forms.ChoiceField(label=_("Operation type"), choices=[], required=False) operator = forms.ChoiceField(label=_("Operator"), choices=[], @@ -472,7 +493,7 @@ class DashboardForm(forms.Form): after = forms.DateField(label=_(u"Date after"), widget=widgets.JQueryDate, required=False) before = forms.DateField(label=_(u"Date before"), - widget=widgets.JQueryDate, required=False) + widget=widgets.JQueryDate, required=False) with_report = forms.BooleanField(label=_("With reports"), required=False) with_finds = forms.BooleanField(label=_("With finds"), required=False) @@ -480,15 +501,17 @@ class DashboardForm(forms.Form): if 'prefix' not in kwargs: kwargs['prefix'] = 'operations' super(DashboardForm, self).__init__(*args, **kwargs) - self.fields['operation_type'].choices = models.OperationType.get_types() + self.fields['operation_type'].choices = \ + models.OperationType.get_types() self.fields['operator'].choices = [('', '--')] - self.fields['operator'].choices += [(orga.pk, orga.name) - for orga in Organization.objects.filter(operator__isnull=False)\ + self.fields['operator'].choices += [ + (orga.pk, orga.name) + for orga in Organization.objects.filter(operator__isnull=False) .order_by('name').distinct().all()] def get_show_detail(self): return hasattr(self, 'cleaned_data') and \ - self.cleaned_data.get('department_detail') + self.cleaned_data.get('department_detail') def get_date_source(self): date_source = 'creation' @@ -513,15 +536,16 @@ class DashboardForm(forms.Form): if self.cleaned_data.get('operator'): fltr['operator_id'] = self.cleaned_data['operator'] if self.cleaned_data.get('after'): - fltr[date_source+'_date__gte'] = self.cleaned_data['after'] + fltr[date_source + '_date__gte'] = self.cleaned_data['after'] if self.cleaned_data.get('before'): - fltr[date_source+'_date__lte'] = self.cleaned_data['before'] + fltr[date_source + '_date__lte'] = self.cleaned_data['before'] if self.cleaned_data.get('with_report'): fltr['report_delivery_date__isnull'] = False if self.cleaned_data.get('with_finds'): fltr['context_record__base_finds__isnull'] = False return fltr + class OperationFormGeneral(forms.Form): form_label = _(u"General") base_model = 'archaeological_site' @@ -532,78 +556,92 @@ class OperationFormGeneral(forms.Form): 'operation_type': models.OperationType, 'archaeological_site': models.ArchaeologicalSite} pk = forms.IntegerField(required=False, widget=forms.HiddenInput) - scientist = forms.IntegerField(label=_("Head scientist"), - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', - args=["_".join( - [unicode(HEAD_SCIENTIST.pk), unicode(SRA_AGENT.pk)])]), - associated_model=Person, - limit={'person_types':(HEAD_SCIENTIST.pk, SRA_AGENT.pk)}, - new=True), + scientist = forms.IntegerField( + label=_("Head scientist"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=["_".join([unicode(HEAD_SCIENTIST.pk), + unicode(SRA_AGENT.pk)])]), + associated_model=Person, + limit={'person_types': (HEAD_SCIENTIST.pk, SRA_AGENT.pk)}, + new=True), validators=[valid_id(Person)], required=False) - operator = forms.IntegerField(label=_("Operator"), - widget=widgets.JQueryAutoComplete(reverse_lazy( - 'autocomplete-organization', args=[OPERATOR.pk]), - limit={'organization_type':(OPERATOR.pk,)}, - associated_model=Organization, new=True), + operator = forms.IntegerField( + label=_("Operator"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-organization', args=[OPERATOR.pk]), + limit={'organization_type': (OPERATOR.pk,)}, + associated_model=Organization, new=True), validators=[valid_id(Organization)], required=False) - in_charge = forms.IntegerField(label=_("In charge"), - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', - args=["_".join([unicode(SRA_AGENT.pk)])]), - associated_model=Person, - limit={'person_types':[SRA_AGENT.pk]}, - new=True), + in_charge = forms.IntegerField( + label=_("In charge"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=["_".join([unicode(SRA_AGENT.pk)])]), + associated_model=Person, + limit={'person_types': [SRA_AGENT.pk]}, new=True), validators=[valid_id(Person)], required=False) operation_type = forms.ChoiceField(label=_(u"Operation type"), choices=[]) - start_date = forms.DateField(label=_(u"Start date"), required=False, - widget=widgets.JQueryDate) - excavation_end_date = forms.DateField(label=_(u"Excavation end date"), - required=False, widget=widgets.JQueryDate) - report_delivery_date = forms.DateField(label=_(u"Report delivery date"), - required=False, widget=widgets.JQueryDate) - surface = forms.IntegerField(required=False, widget=widgets.AreaWidget, - label=_(u"Total surface (m²)"), - validators=[validators.MinValueValidator(0), - validators.MaxValueValidator(999999999)]) + start_date = forms.DateField( + label=_(u"Start date"), required=False, widget=widgets.JQueryDate) + excavation_end_date = forms.DateField( + label=_(u"Excavation end date"), required=False, + widget=widgets.JQueryDate) + report_delivery_date = forms.DateField( + label=_(u"Report delivery date"), required=False, + widget=widgets.JQueryDate) + surface = forms.IntegerField( + required=False, widget=widgets.AreaWidget, + label=_(u"Total surface (m²)"), + validators=[validators.MinValueValidator(0), + validators.MaxValueValidator(999999999)]) year = forms.IntegerField(label=_(u"Year"), - initial=lambda:datetime.datetime.now().year, + 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'})) + operation_code = forms.IntegerField( + label=_(u"Operation code"), + initial=models.Operation.get_available_operation_code, + widget=OperationCodeInput(attrs={'readonly': 'readonly'})) common_name = forms.CharField(label=_(u"Generic name"), required=False, max_length=120, widget=forms.Textarea) operator_reference = forms.CharField(label=_(u"Operator reference"), required=False, max_length=20) archaeological_site = widgets.MultipleAutocompleteField( - model=models.ArchaeologicalSite, - label=_("Associated archaeological sites"), - new=True, required=False) + model=models.ArchaeologicalSite, + label=_("Associated archaeological sites"), new=True, required=False) if settings.COUNTRY == 'fr': - negative_result = forms.NullBooleanField(required=False, - label=u"Résultat considéré comme négatif") + negative_result = forms.NullBooleanField( + required=False, label=u"Résultat considéré comme négatif") code_patriarche = forms.IntegerField(label=u"Code PATRIARCHE", - required=False) - code_dracar = forms.CharField(label=u"Code DRACAR", required=False, - validators=[validators.MaxLengthValidator(10)]) - eas_number = forms.CharField(label=u"Numéro de l'EA", required=False, - validators=[validators.MaxLengthValidator(20)]) + required=False) + code_dracar = forms.CharField( + label=u"Code DRACAR", required=False, + validators=[validators.MaxLengthValidator(10)]) + eas_number = forms.CharField( + label=u"Numéro de l'EA", required=False, + validators=[validators.MaxLengthValidator(20)]) cira_date = forms.DateField(label=u"Date avis CIRA", required=False, widget=widgets.JQueryDate) - cira_rapporteur = forms.IntegerField(label=u"Rapporteur CIRA", - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', - args=["_".join([unicode(HEAD_SCIENTIST.pk), unicode(SRA_AGENT.pk)])]), - limit={'person_types':[SRA_AGENT.pk, HEAD_SCIENTIST.pk]}, - associated_model=Person, new=True), - validators=[valid_id(Person)], required=False) + cira_rapporteur = forms.IntegerField( + label=u"Rapporteur CIRA", + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=["_".join([unicode(HEAD_SCIENTIST.pk), + unicode(SRA_AGENT.pk)])]), + limit={'person_types': [SRA_AGENT.pk, HEAD_SCIENTIST.pk]}, + associated_model=Person, new=True), + validators=[valid_id(Person)], required=False) comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, required=False) def __init__(self, *args, **kwargs): super(OperationFormGeneral, self).__init__(*args, **kwargs) - self.fields['operation_type'].choices = models.OperationType.get_types() - self.fields['operation_type'].help_text = models.OperationType.get_help() + self.fields['operation_type'].choices = \ + models.OperationType.get_types() + self.fields['operation_type'].help_text = \ + models.OperationType.get_help() # data POSTED if kwargs and kwargs['data'] \ and 'readonly' in self.fields['operation_code'].widget.attrs: @@ -614,11 +652,14 @@ class OperationFormGeneral(forms.Form): # verify the logic between start date and excavation end date if cleaned_data['excavation_end_date']: if not self.cleaned_data['start_date']: - raise forms.ValidationError(_(u"If you want to set an " - u"excavation end date you have to provide a start date.")) - if cleaned_data['excavation_end_date'] < cleaned_data['start_date']: - raise forms.ValidationError(_(u"The excavation end date "\ - u"cannot be before the start date.")) + raise forms.ValidationError( + _(u"If you want to set an excavation end date you have to " + u"provide a start date.")) + if cleaned_data['excavation_end_date'] \ + < cleaned_data['start_date']: + raise forms.ValidationError( + _(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") ops = models.Operation.objects.filter(year=year, @@ -628,25 +669,29 @@ class OperationFormGeneral(forms.Form): ops = ops.exclude(pk=cleaned_data['pk']) if ops.count(): max_val = models.Operation.objects.filter(year=year).aggregate( - Max('operation_code'))["operation_code__max"] + Max('operation_code'))["operation_code__max"] msg = '' if year and max_val: - msg = _(u"Operation code already exist for " - u"year: %(year)d - use a value bigger than %(last_val)d") % { - 'year':year, 'last_val':max_val} + msg = _( + u"Operation code already exist for year: %(year)d - use a " + u"value bigger than %(last_val)d") % { + 'year': year, 'last_val': max_val} else: - msg = _(u"Bad operation code") + msg = _(u"Bad operation code") raise forms.ValidationError(msg) return self.cleaned_data + class OperationFormModifGeneral(OperationFormGeneral): operation_code = forms.IntegerField(label=_(u"Operation code")) if FILES_AVAILABLE: - currents = {'associated_file':File} - associated_file = forms.IntegerField(label=_(u"Archaelogical file"), - widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'), - associated_model=File), - validators=[valid_id(File)], required=False) + currents = {'associated_file': File} + associated_file = forms.IntegerField( + label=_(u"Archaelogical file"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-file'), + associated_model=File), + validators=[valid_id(File)], required=False) def __init__(self, *args, **kwargs): super(OperationFormModifGeneral, self).__init__(*args, **kwargs) @@ -656,7 +701,8 @@ class OperationFormModifGeneral(OperationFormGeneral): 'associated_file') OperationFormModifGeneral.associated_models = \ - OperationFormGeneral.associated_models.copy() + OperationFormGeneral.associated_models.copy() + if FILES_AVAILABLE: OperationFormModifGeneral.associated_models['associated_file'] = File @@ -671,26 +717,30 @@ class OperationFormPreventive(forms.Form): effective_man_days = forms.IntegerField(label=_(u"Effective man-days"), required=False) if settings.COUNTRY == 'fr': - fnap_financing = forms.FloatField(required=False, - label=u"Pourcentage de financement FNAP", - validators=[validators.MinValueValidator(0), - validators.MaxValueValidator(100)]) + fnap_financing = forms.FloatField( + required=False, label=u"Pourcentage de financement FNAP", + validators=[validators.MinValueValidator(0), + validators.MaxValueValidator(100)]) + class OperationFormPreventiveDiag(forms.Form): form_label = _("Preventive informations - diagnostic") if settings.COUNTRY == 'fr': - zoning_prescription = forms.NullBooleanField(required=False, - label=_(u"Prescription on zoning")) - large_area_prescription = forms.NullBooleanField(required=False, - label=_(u"Prescription on large area")) + zoning_prescription = forms.NullBooleanField( + required=False, label=_(u"Prescription on zoning")) + large_area_prescription = forms.NullBooleanField( + required=False, label=_(u"Prescription on large area")) geoarchaeological_context_prescription = forms.NullBooleanField( - required=False, label=_(u"Prescription on geoarchaeological context")) + required=False, + label=_(u"Prescription on geoarchaeological context")) + class SelectedTownForm(forms.Form): form_label = _("Towns") - associated_models = {'town':Town} + associated_models = {'town': Town} town = forms.ChoiceField(label=_("Town"), choices=(), validators=[valid_id(Town)]) + def __init__(self, *args, **kwargs): towns = None if 'data' in kwargs and 'TOWNS' in kwargs['data']: @@ -707,14 +757,16 @@ class SelectedTownForm(forms.Form): self.fields['town'].choices = [('', '--')] + towns SelectedTownFormset = formset_factory(SelectedTownForm, can_delete=True, - formset=TownFormSet) + formset=TownFormSet) SelectedTownFormset.form_label = _(u"Towns") + class SelectedParcelForm(forms.Form): form_label = _("Parcels") - associated_models = {'parcel':models.Parcel} - parcel = forms.ChoiceField(label=_("Parcel"), choices=(), - validators=[valid_id(models.Parcel)]) + associated_models = {'parcel': models.Parcel} + parcel = forms.ChoiceField( + label=_("Parcel"), choices=(), validators=[valid_id(models.Parcel)]) + def __init__(self, *args, **kwargs): parcels = None if 'data' in kwargs and 'PARCELS' in kwargs['data']: @@ -731,17 +783,18 @@ class SelectedParcelForm(forms.Form): self.fields['parcel'].choices = [('', '--')] + parcels SelectedParcelFormSet = formset_factory(SelectedParcelForm, can_delete=True, - formset=ParcelFormSet) + formset=ParcelFormSet) SelectedParcelFormSet.form_label = _("Parcels") SelectedParcelGeneralFormSet = formset_factory(ParcelForm, can_delete=True, - formset=ParcelFormSet) + formset=ParcelFormSet) SelectedParcelGeneralFormSet.form_label = _("Parcels") + class RemainForm(forms.Form): form_label = _("Remain types") base_model = 'remain' - associated_models = {'remain':models.RemainType} + associated_models = {'remain': models.RemainType} remain = forms.ChoiceField(label=_("Remain type"), required=False, choices=[]) @@ -750,6 +803,7 @@ class RemainForm(forms.Form): self.fields['remain'].choices = models.RemainType.get_types() self.fields['remain'].help_text = models.RemainType.get_help() + class RemainFormSet(FormSet): def clean(self): """Checks that no remain types are duplicated.""" @@ -760,10 +814,11 @@ RemainFormset = formset_factory(RemainForm, can_delete=True, formset=RemainFormSet) RemainFormset.form_label = _("Remain types") + class PeriodForm(forms.Form): form_label = _("Periods") base_model = 'period' - associated_models = {'period':models.Period} + associated_models = {'period': models.Period} period = forms.ChoiceField(label=_("Period"), required=False, choices=[]) @@ -772,6 +827,7 @@ class PeriodForm(forms.Form): self.fields['period'].choices = models.Period.get_types() self.fields['period'].help_text = models.Period.get_help() + class PeriodFormSet(FormSet): def clean(self): """Checks that no period are duplicated.""" @@ -782,30 +838,33 @@ PeriodFormset = formset_factory(PeriodForm, can_delete=True, formset=PeriodFormSet) PeriodFormset.form_label = _("Periods") + class ArchaeologicalSiteForm(forms.Form): reference = forms.CharField(label=_(u"Reference"), max_length=20) name = forms.CharField(label=_(u"Name"), max_length=200, required=False) - periods = forms.MultipleChoiceField(label=_("Periods"), - choices=[], widget=widgets.Select2Multiple, required=False) - remains = forms.MultipleChoiceField(label=_("Remains"), - choices=[], widget=widgets.Select2Multiple, required=False) + periods = forms.MultipleChoiceField( + label=_("Periods"), choices=[], widget=widgets.Select2Multiple, + required=False) + remains = forms.MultipleChoiceField( + label=_("Remains"), choices=[], widget=widgets.Select2Multiple, + required=False) def __init__(self, *args, **kwargs): self.limits = {} if 'limits' in kwargs: - limits = kwargs.pop('limits') + kwargs.pop('limits') super(ArchaeologicalSiteForm, self).__init__(*args, **kwargs) self.fields['periods'].choices = \ - models.Period.get_types(empty_first=False) + models.Period.get_types(empty_first=False) self.fields['periods'].help_text = models.Period.get_help() self.fields['remains'].choices = \ - models.RemainType.get_types(empty_first=False) + models.RemainType.get_types(empty_first=False) self.fields['remains'].help_text = models.RemainType.get_help() def clean_reference(self): reference = self.cleaned_data['reference'] - if models.ArchaeologicalSite.objects.filter( - reference=reference).count(): + if models.ArchaeologicalSite.objects\ + .filter(reference=reference).count(): raise forms.ValidationError(_(u"This reference already exists.")) return reference @@ -821,19 +880,22 @@ class ArchaeologicalSiteForm(forms.Form): item.remains.add(remain) return item + class ArchaeologicalSiteSelectionForm(forms.Form): form_label = _("Associated archaelogical sites") archaeological_sites = forms.IntegerField( - widget=widgets.JQueryAutoComplete(reverse_lazy( - 'autocomplete-archaeologicalsite'), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-archaeologicalsite'), associated_model=models.ArchaeologicalSite, new=True, multiple=True), - label=_(u"Search")) + label=_(u"Search")) + class FinalOperationClosingForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to close this operation?") + class OperationDeletionForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to delete this operation?") @@ -842,10 +904,12 @@ class OperationDeletionForm(FinalForm): # Source management for operations # #################################### + class OperationSourceForm(SourceForm): pk = forms.IntegerField(required=False, widget=forms.HiddenInput) index = forms.IntegerField(label=_(u"Index")) - hidden_operation_id = forms.IntegerField(label="", widget=forms.HiddenInput) + hidden_operation_id = forms.IntegerField(label="", + widget=forms.HiddenInput) def __init__(self, *args, **kwargs): super(OperationSourceForm, self).__init__(*args, **kwargs) @@ -858,18 +922,20 @@ class OperationSourceForm(SourceForm): cleaned_data = self.cleaned_data operation_id = cleaned_data.get("hidden_operation_id") index = cleaned_data.get("index") - srcs = models.OperationSource.objects.filter(index=index, - operation__pk=operation_id) + srcs = models.OperationSource.objects\ + .filter(index=index, + operation__pk=operation_id) if 'pk' in cleaned_data and cleaned_data['pk']: srcs = srcs.exclude(pk=cleaned_data['pk']) if srcs.count(): - max_val = models.OperationSource.objects.filter( - operation__pk=operation_id - ).aggregate(Max('index'))["index__max"] + max_val = models.OperationSource.objects\ + .filter(operation__pk=operation_id)\ + .aggregate(Max('index'))["index__max"] operation = models.Operation.objects.get(pk=operation_id) - raise forms.ValidationError(_(u"Index already exists for " -"operation: %(operation)s - use a value bigger than %(last_val)d") % { - "operation":unicode(operation), 'last_val':max_val}) + raise forms.ValidationError( + _(u"Index already exists for operation: %(operation)s - use a " + u"value bigger than %(last_val)d") % { + "operation": unicode(operation), 'last_val': max_val}) return cleaned_data SourceOperationFormSelection = get_form_selection( @@ -877,6 +943,7 @@ SourceOperationFormSelection = get_form_selection( models.Operation, OperationSelect, 'get-operation', _(u"You should select an operation.")) + class OperationSourceSelect(SourceSelect): operation__towns = get_town_field(label=_(u"Operation's town")) operation__operation_type = forms.ChoiceField(label=_(u"Operation type"), @@ -886,9 +953,9 @@ class OperationSourceSelect(SourceSelect): def __init__(self, *args, **kwargs): super(OperationSourceSelect, self).__init__(*args, **kwargs) self.fields['operation__operation_type'].choices = \ - models.OperationType.get_types() + models.OperationType.get_types() self.fields['operation__operation_type'].help_text = \ - models.OperationType.get_help() + models.OperationType.get_help() OperationSourceFormSelection = get_form_selection( @@ -900,6 +967,7 @@ OperationSourceFormSelection = get_form_selection( # Administrative act management for operations # ################################################ + class AdministrativeActOpeSelect(TableSelect): year = forms.IntegerField(label=_("Year")) index = forms.IntegerField(label=_("Index")) @@ -909,50 +977,53 @@ class AdministrativeActOpeSelect(TableSelect): act_type = forms.ChoiceField(label=_("Act type"), choices=[]) operation__towns = get_town_field() history_creator = forms.IntegerField( - label=_(u"Created by"), - widget=widgets.JQueryAutoComplete( - reverse_lazy('autocomplete-person', - args=['0', 'user']), - associated_model=Person), - validators=[valid_id(Person)]) + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) def __init__(self, *args, **kwargs): super(AdministrativeActOpeSelect, self).__init__(*args, **kwargs) self.fields['act_type'].choices = models.ActType.get_types( - dct={'intented_to':'O'}) + dct={'intented_to': 'O'}) self.fields['act_type'].help_text = models.ActType.get_help( - dct={'intented_to':'O'}) + dct={'intented_to': 'O'}) + class AdministrativeActOpeFormSelection(forms.Form): form_label = _("Administrative act search") - associated_models = {'pk':models.AdministrativeAct} - currents = {'pk':models.AdministrativeAct} - pk = forms.IntegerField(label="", required=False, - widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeactop'), + associated_models = {'pk': models.AdministrativeAct} + currents = {'pk': models.AdministrativeAct} + pk = forms.IntegerField( + label="", required=False, + widget=widgets.JQueryJqGrid( + reverse_lazy('get-administrativeactop'), AdministrativeActOpeSelect, models.AdministrativeAct, table_cols='TABLE_COLS_OPE'), - validators=[valid_id(models.AdministrativeAct)]) + validators=[valid_id(models.AdministrativeAct)]) def clean(self): cleaned_data = self.cleaned_data if 'pk' not in cleaned_data or not cleaned_data['pk']: - raise forms.ValidationError(_(u"You should select an administrative" - " act.")) + raise forms.ValidationError( + _(u"You should select an administrative act.")) return cleaned_data + class AdministrativeActOpeForm(forms.Form): form_label = _("General") - associated_models = {'act_type':models.ActType,} + associated_models = {'act_type': models.ActType, } # 'signatory':Person} act_type = forms.ChoiceField(label=_("Act type"), choices=[]) - #signatory = forms.IntegerField(label=_("Signatory"), + # signatory = forms.IntegerField(label=_("Signatory"), # widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'), # associated_model=Person, new=True), # validators=[valid_id(Person)], required=False) act_object = forms.CharField(label=_(u"Object"), max_length=300, widget=forms.Textarea, required=False) - signature_date = forms.DateField(label=_(u"Signature date"), - initial=get_now, widget=widgets.JQueryDate) + signature_date = forms.DateField( + label=_(u"Signature date"), initial=get_now, widget=widgets.JQueryDate) if settings.COUNTRY == 'fr': ref_sra = forms.CharField(label=u"Autre référence", max_length=15, required=False) @@ -960,14 +1031,16 @@ class AdministrativeActOpeForm(forms.Form): def __init__(self, *args, **kwargs): super(AdministrativeActOpeForm, self).__init__(*args, **kwargs) self.fields['act_type'].choices = models.ActType.get_types( - dct={'intented_to':'O'}) + dct={'intented_to': 'O'}) self.fields['act_type'].help_text = models.ActType.get_help( - dct={'intented_to':'O'}) + dct={'intented_to': 'O'}) + class FinalAdministrativeActDeleteForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to delete this administrative act?") + class DocumentGenerationAdminActForm(forms.Form): _associated_model = models.AdministrativeAct document_template = forms.ChoiceField(label=_("Template"), choices=[]) @@ -981,23 +1054,23 @@ class DocumentGenerationAdminActForm(forms.Form): self.obj = kwargs.pop('obj') super(DocumentGenerationAdminActForm, self).__init__(*args, **kwargs) self.fields['document_template'].choices = DocumentTemplate.get_tuples( - dct={'associated_object_name': - 'archaeological_operations.models.AdministrativeAct', - 'acttypes__intented_to':self.document_type}) + dct={'associated_object_name': + 'archaeological_operations.models.AdministrativeAct', + 'acttypes__intented_to': self.document_type}) def clean(self): if not self.obj: - raise forms.ValidationError(_(u"You should select an administrative" - " act.")) + raise forms.ValidationError( + _(u"You should select an administrative act.")) cleaned_data = self.cleaned_data try: dt = DocumentTemplate.objects.get( - pk=self.cleaned_data['document_template']) + pk=self.cleaned_data['document_template']) except DocumentTemplate.DoesNotExist: raise forms.ValidationError(_(u"This document is not intended for " u"this type of act.")) - if self.obj.act_type.pk not in [act_type.pk - for act_type in dt.acttypes.all()]: + if self.obj.act_type.pk not in [ + act_type.pk for act_type in dt.acttypes.all()]: raise forms.ValidationError(_(u"This document is not intended for " u"this type of act.")) return cleaned_data @@ -1009,22 +1082,25 @@ class DocumentGenerationAdminActForm(forms.Form): return try: template = DocumentTemplate.objects.get( - pk=self.cleaned_data.get('document_template')) + pk=self.cleaned_data.get('document_template')) except DocumentTemplate.DoesNotExist: return return template.publish(c_object) + class GenerateDocForm(forms.Form): form_label = _("Doc generation") - doc_generation = forms.ChoiceField(required=False, choices=[], - label=_(u"Generate the associated doc?")) + doc_generation = forms.ChoiceField( + required=False, choices=[], label=_(u"Generate the associated doc?")) + def __init__(self, *args, **kwargs): choices = [] if 'choices' in kwargs: choices = kwargs.pop('choices') super(GenerateDocForm, self).__init__(*args, **kwargs) - self.fields['doc_generation'].choices = [('', u'-'*9)] + \ - [(choice.pk , unicode(choice)) for choice in choices] + self.fields['doc_generation'].choices = [('', u'-' * 9)] + \ + [(choice.pk, unicode(choice)) for choice in choices] + class AdministrativeActRegisterSelect(AdministrativeActOpeSelect): indexed = forms.NullBooleanField(label=_(u"Indexed?")) @@ -1032,23 +1108,26 @@ class AdministrativeActRegisterSelect(AdministrativeActOpeSelect): def __init__(self, *args, **kwargs): super(AdministrativeActRegisterSelect, self).__init__(*args, **kwargs) self.fields['act_type'].choices = models.ActType.get_types( - dct={'indexed':True}) + dct={'indexed': True}) self.fields['act_type'].help_text = models.ActType.get_help() + class AdministrativeActRegisterFormSelection(forms.Form): - form_label = pgettext_lazy('admin act register',u"Register") - associated_models = {'pk':models.AdministrativeAct} - currents = {'pk':models.AdministrativeAct} - pk = forms.IntegerField(label="", required=False, - widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeact'), + form_label = pgettext_lazy('admin act register', u"Register") + associated_models = {'pk': models.AdministrativeAct} + currents = {'pk': models.AdministrativeAct} + pk = forms.IntegerField( + label="", required=False, + widget=widgets.JQueryJqGrid( + reverse_lazy('get-administrativeact'), AdministrativeActRegisterSelect, models.AdministrativeAct, table_cols='TABLE_COLS', source_full=reverse_lazy('get-administrativeact-full')), - validators=[valid_id(models.AdministrativeAct)]) + validators=[valid_id(models.AdministrativeAct)]) def clean(self): cleaned_data = self.cleaned_data if 'pk' not in cleaned_data or not cleaned_data['pk']: - raise forms.ValidationError(_(u"You should select an administrative" - " act.")) + raise forms.ValidationError( + _(u"You should select an administrative act.")) return cleaned_data |