diff options
Diffstat (limited to 'archaeological_files_pdl/forms.py')
| -rw-r--r-- | archaeological_files_pdl/forms.py | 187 | 
1 files changed, 103 insertions, 84 deletions
| diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index 0cb67dbd1..03c308ba5 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -30,17 +30,18 @@ from archaeological_files import models  from ishtar_common.forms import get_now, reverse_lazy  from ishtar_common.forms_common import get_advanced_town_field  from archaeological_files.forms import GENERAL_CONTRACTOR, \ -        GENERAL_CONTRACTOR_ORGA, RESPONSIBLE_PLANNING_SERVICE, \ -        RESPONSIBLE_PLANNING_SERVICE_ORGA +    GENERAL_CONTRACTOR_ORGA, RESPONSIBLE_PLANNING_SERVICE, \ +    RESPONSIBLE_PLANNING_SERVICE_ORGA  from ishtar_common import widgets +  class FileFormGeneral(forms.Form):      form_label = _("General") -    associated_models = {'file_type':models.FileType} +    associated_models = {'file_type': models.FileType}      file_type = forms.ChoiceField(label=_("File type"), choices=[])      year = forms.IntegerField(label=_("Year"), -                              initial=lambda:datetime.datetime.now().year, +                              initial=lambda: datetime.datetime.now().year,                                validators=[validators.MinValueValidator(1900),                                            validators.MaxValueValidator(2100)])      creation_date = forms.DateField(label=_(u"Creation date"), @@ -53,61 +54,67 @@ class FileFormGeneral(forms.Form):          self.fields['file_type'].choices = models.FileType.get_types()          self.fields['file_type'].help_text = models.FileType.get_help() +  class FileFormPreventiveType(forms.Form):      form_label = u"Saisine" -    associated_models = {'saisine_type':models.SaisineType, -                         'permit_type':models.PermitType} +    associated_models = {'saisine_type': models.SaisineType, +                         'permit_type': models.PermitType}      permit_type = forms.ChoiceField(label=_(u"Permit type"), required=False,                                      choices=[])      saisine_type = forms.ChoiceField(label=_(u"Saisine type"),                                       choices=[]) +      def __init__(self, *args, **kwargs):          super(FileFormPreventiveType, self).__init__(*args, **kwargs)          self.fields['saisine_type'].choices = models.SaisineType.get_types()          self.fields['saisine_type'].help_text = models.SaisineType.get_help() -        self.fields['permit_type'].choices = models.PermitType.get_types( -                                                              default='NP') +        self.fields['permit_type'].choices = \ +            models.PermitType.get_types(default='NP')          self.fields['permit_type'].help_text = models.PermitType.get_help() +  class FileFormPlanning(forms.Form):      form_label = _(u"Planning") -    associated_models = {'main_town':models.Town} +    associated_models = {'main_town': models.Town}      name = forms.CharField(label=_(u"Planning name"), required=False,                             max_length=100)      main_town = get_advanced_town_field(required=True)      locality = forms.CharField(label=_(u"Locality"), max_length=100,                                 required=False) -    address = forms.CharField(label=_(u"Address (number/street)"), -                              widget=forms.Textarea( -                                    attrs={"placeholder":_(u"Number/street")}), -                              required=False, -                              ) +    address = forms.CharField( +        label=_(u"Address (number/street)"), +        widget=forms.Textarea(attrs={"placeholder": _(u"Number/street")}), +        required=False)      postal_code = forms.CharField(label=_(u"Postal code"), max_length=10,                                    required=False) -    total_surface = forms.IntegerField(required=False, -                           widget=widgets.AreaWidget, -                           label=_(u"Total surface (m²)"), -                           validators=[validators.MinValueValidator(0), -                                       validators.MaxValueValidator(999999999)]) -    total_developed_surface = forms.IntegerField(widget=widgets.AreaWidget, -           label=_(u"Total developed surface (m²)"), -           required=False, validators=[validators.MinValueValidator(0), -                                       validators.MaxValueValidator(999999999)]) +    total_surface = forms.IntegerField( +        required=False, +        widget=widgets.AreaWidget, +        label=_(u"Total surface (m²)"), +        validators=[validators.MinValueValidator(0), +                    validators.MaxValueValidator(999999999)]) +    total_developed_surface = forms.IntegerField( +        widget=widgets.AreaWidget, +        label=_(u"Total developed surface (m²)"), +        required=False, +        validators=[validators.MinValueValidator(0), +                    validators.MaxValueValidator(999999999)]) +  class FileFormResearchAddress(forms.Form):      form_label = _(u"Address") -    associated_models = {'main_town':models.Town} +    associated_models = {'main_town': models.Town}      main_town = get_advanced_town_field(required=True)      locality = forms.CharField(label=_(u"Locality"), max_length=100,                                 required=False) -    address = forms.CharField(label=_(u"Address (number/street)"), -                              widget=forms.Textarea( -                                    attrs={"placeholder":_(u"Number/street")}), -                              required=False, -                              ) +    address = forms.CharField( +        label=_(u"Address (number/street)"), +        widget=forms.Textarea(attrs={"placeholder": _(u"Number/street")}), +        required=False)      postal_code = forms.CharField(label=_(u"Postal code"), max_length=10,                                    required=False) +  class PersonOrgaForm(forms.Form):      PERSON_FIELD = 'TO BE DEFINED'      PERSON_TYPE = GENERAL_CONTRACTOR @@ -128,14 +135,16 @@ class PersonOrgaForm(forms.Form):          if 'data' in kwargs:              # the order is important: PERSON can have an ORGA              for field in [self.ORGA_FIELD, self.PERSON_FIELD]: -                current_item_key = ((kwargs['prefix'] + '-') \ -                        if kwargs.get('prefix') else '') + field +                current_item_key = ( +                    (kwargs['prefix'] + '-') +                    if kwargs.get('prefix') else '') + field                  if kwargs['data'] and kwargs['data'].get(current_item_key):                      model = self.associated_models[field]                      try: -                        item = model.objects.get(pk=kwargs['data'][current_item_key]) -                        current_status = 'natural' if field == self.PERSON_FIELD \ -                                        else 'corporation' +                        model.objects.get( +                            pk=kwargs['data'][current_item_key]) +                        current_status = 'natural' \ +                            if field == self.PERSON_FIELD else 'corporation'                      except (model.DoesNotExist, ValueError):                          pass          initial = kwargs.get("initial", {}) @@ -145,9 +154,9 @@ class PersonOrgaForm(forms.Form):                  value = initial.get(field)                  model = self.associated_models[field]                  try: -                    item = model.objects.get(pk=value) +                    model.objects.get(pk=value)                      current_status = 'natural' if field == self.PERSON_FIELD \ -                                    else 'corporation' +                        else 'corporation'                  except (model.DoesNotExist, ValueError):                      pass @@ -173,36 +182,37 @@ class PersonOrgaForm(forms.Form):          # distinct widget for natural and corporation          if status == 'natural':              self.fields[self.PERSON_FIELD] = forms.IntegerField( -             label=self.PERSON_LABEL, -             required=False, -             initial= initial.get(self.PERSON_FIELD, None), -             widget=widgets.JQueryPersonOrganization( -                reverse_lazy('autocomplete-person', -                             args=[self.PERSON_TYPE.pk]), -                reverse_lazy('person_create'), -                model=Person, -                limit={'person_types':[self.PERSON_TYPE.pk], -                       'attached_to__isnull':True}, -                js_template='ishtar/blocks/JQueryNaturalPerson.js', -                new=True), -             validators=[valid_id(Person)]) +                label=self.PERSON_LABEL, +                required=False, +                initial=initial.get(self.PERSON_FIELD, None), +                widget=widgets.JQueryPersonOrganization( +                    reverse_lazy('autocomplete-person', +                                 args=[self.PERSON_TYPE.pk]), +                    reverse_lazy('person_create'), +                    model=Person, +                    limit={'person_types': [self.PERSON_TYPE.pk], +                           'attached_to__isnull': True}, +                    js_template='ishtar/blocks/JQueryNaturalPerson.js', +                    new=True), +                validators=[valid_id(Person)])          else:              self.fields[self.ORGA_FIELD] = forms.IntegerField( -             label=self.ORGA_LABEL, -             required=False, -             initial= initial.get(self.ORGA_FIELD, None), -             widget=widgets.JQueryAutoComplete( -                reverse_lazy('autocomplete-organization', -                args=[self.ORGA_TYPE.pk]), -                limit={'organization_type':[self.ORGA_TYPE.pk]}, -                associated_model=models.Organization, -                new=True), -            validators=[valid_id(models.Organization)]) +                label=self.ORGA_LABEL, +                required=False, +                initial=initial.get(self.ORGA_FIELD, None), +                widget=widgets.JQueryAutoComplete( +                    reverse_lazy('autocomplete-organization', +                                 args=[self.ORGA_TYPE.pk]), +                    limit={'organization_type': [self.ORGA_TYPE.pk]}, +                    associated_model=models.Organization, +                    new=True), +                validators=[valid_id(models.Organization)]) +  class FileFormGeneralContractor(PersonOrgaForm):      form_label = _(u"General contractor") -    associated_models = {'general_contractor':models.Person, -         'corporation_general_contractor':models.Organization} +    associated_models = {'general_contractor': models.Person, +                         'corporation_general_contractor': models.Organization}      PERSON_FIELD = 'general_contractor'      PERSON_TYPE = GENERAL_CONTRACTOR      PERSON_LABEL = _(u"General contractor") @@ -211,15 +221,16 @@ class FileFormGeneralContractor(PersonOrgaForm):      ORGA_LABEL = _(u"General contractor")      # default initialisation before dynamic -    general_contractor = forms.IntegerField(label=" ", widget=forms.HiddenInput, -                                            required=False) -    corporation_general_contractor = forms.IntegerField(label=" ", -                                    widget=forms.HiddenInput, required=False) +    general_contractor = forms.IntegerField( +        label=" ", widget=forms.HiddenInput, required=False) +    corporation_general_contractor = forms.IntegerField( +        label=" ", widget=forms.HiddenInput, required=False) +  class FileFormPlanningService(PersonOrgaForm):      form_label = _(u"Town planning service") -    associated_models = {'responsible_town_planning_service':models.Person, -                         'planning_service':models.Organization} +    associated_models = {'responsible_town_planning_service': models.Person, +                         'planning_service': models.Organization}      reference_number = forms.IntegerField(label=_(u"File reference"),                                            required=False) @@ -231,25 +242,33 @@ class FileFormPlanningService(PersonOrgaForm):      ORGA_LABEL = _(u"Planning service")      # default initialisation before dynamic -    responsible_town_planning_service = forms.IntegerField(label=" ", -                                     widget=forms.HiddenInput, required=False) +    responsible_town_planning_service = forms.IntegerField( +        label=" ", widget=forms.HiddenInput, required=False)      planning_service = forms.IntegerField(label=" ", widget=forms.HiddenInput,                                            required=False) +  class FileFormInstruction(forms.Form):      form_label = u"Instruction SRA" -    associated_models = {'in_charge':models.Person, -                         'related_file':models.File} -    in_charge = forms.IntegerField(label=_("Person in charge"), -        widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person', -          args=[PersonType.objects.get(txt_idx='sra_agent').pk]), -        limit={'person_types':[PersonType.objects.get(txt_idx='sra_agent').pk]}, -        associated_model=Person, new=True), +    associated_models = {'in_charge': models.Person, +                         'related_file': models.File} +    in_charge = forms.IntegerField( +        label=_("Person in charge"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy( +                'autocomplete-person', +                args=[PersonType.objects.get(txt_idx='sra_agent').pk]), +            limit={ +                'person_types': [ +                    PersonType.objects.get(txt_idx='sra_agent').pk] +                }, +            associated_model=Person, new=True),          validators=[valid_id(Person)]) -    related_file = forms.IntegerField(label=_("Related file"), required=False, -         widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'), -                                           associated_model=models.File), -         validators=[valid_id(models.File)]) +    related_file = forms.IntegerField( +        label=_("Related file"), required=False, +        widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-file'), +                                          associated_model=models.File), +        validators=[valid_id(models.File)])      comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,                                required=False)      instruction_deadline = forms.DateField(widget=widgets.JQueryDate, @@ -259,8 +278,7 @@ class FileFormInstruction(forms.Form):                                            validators.MaxValueValidator(2100)])      numeric_reference = forms.IntegerField(label=_("Numeric reference"),                                             required=False) -    end_date = forms.DateField(initial=get_now, widget=widgets.JQueryDate, -                               required=False) +    end_date = forms.DateField(widget=widgets.JQueryDate, required=False)      def __init__(self, *args, **kwargs):          c_year = datetime.date.today().year @@ -268,10 +286,11 @@ class FileFormInstruction(forms.Form):              c_year = kwargs.pop('year')          super(FileFormInstruction, self).__init__(*args, **kwargs)          self.fields['year'].initial = c_year -        self.fields['year'].widget.attrs.update({'readonly':'readonly'}) +        self.fields['year'].widget.attrs.update({'readonly': 'readonly'})          c_num, lasts = 0, ""          q = models.File.objects.filter(numeric_reference__isnull=False, -                        year=c_year).order_by('-numeric_reference') +                                       year=c_year +                                       ).order_by('-numeric_reference')          if q.count():              c_num = q.all()[0].numeric_reference              lasts = u"SRA %s-%d" % (unicode(c_year), c_num) | 
