From 450dabdb543f92d11bedb3a5f6942d380c94f777 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 10 Jan 2011 04:42:20 +0100 Subject: Add some validation test for numeric fields (closes #69) --- ishtar/furnitures/forms.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index 7203e6bb8..51d37b8b7 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -23,7 +23,7 @@ Forms definition import datetime from django.core.urlresolvers import reverse -from django.core.validators import MaxLengthValidator +from django.core import validators from django.core.exceptions import ObjectDoesNotExist from django.utils import formats from django.utils.functional import lazy @@ -446,7 +446,9 @@ class FileFormGeneral(forms.Form): associated_model=models.Person), validators=[models.valid_id(models.Person)]) year = forms.IntegerField(label=_("Year"), - initial=lambda:datetime.datetime.now().year) + initial=lambda:datetime.datetime.now().year, + validators=[validators.MinValueValidator(1900), + validators.MaxValueValidator(2100)]) numeric_reference = forms.IntegerField(label=_("Numeric reference"), widget=forms.HiddenInput, required=False) internal_reference = forms.CharField(label=_(u"Internal reference"), @@ -469,7 +471,9 @@ class FileFormGeneralRO(FileFormGeneral): class FileFormAddress(forms.Form): form_label = _("Address") associated_models = {'town':models.Town} - total_surface = forms.IntegerField(label=_("Total surface")) + total_surface = forms.IntegerField(label=_("Total surface"), + validators=[validators.MinValueValidator(0), + validators.MaxValueValidator(999999999)]) address = forms.CharField(label=_(u"Main address"), widget=forms.Textarea) address_complement = forms.CharField(label=_(u"Main address - complement")) postal_code = forms.CharField(label=_(u"Main address - postal code"), @@ -508,11 +512,13 @@ class ParcelForm(forms.Form): town = forms.ChoiceField(label=_("Town"), choices=(), validators=[models.valid_id(models.Town)]) section = forms.CharField(label=_(u"Section"), - validators=[MaxLengthValidator(4)]) + validators=[validators.MaxLengthValidator(4)]) parcel_number = forms.CharField(label=_(u"Parcel number"), - validators=[MaxLengthValidator(6)]) + validators=[validators.MaxLengthValidator(6)]) year = forms.IntegerField(label=_("Year"), - initial=lambda:datetime.datetime.now().year) + initial=lambda:datetime.datetime.now().year, + validators=[validators.MinValueValidator(1900), + validators.MaxValueValidator(2100)]) def __init__(self, *args, **kwargs): towns = None if 'data' in kwargs and 'TOWNS' in kwargs['data']: @@ -561,7 +567,9 @@ class FileFormPreventive(forms.Form): associated_model=models.Organization), validators=[models.valid_id(models.Organization)]) total_developed_surface = forms.IntegerField( - label=_("Total developed surface")) + label=_("Total developed surface"), + validators=[validators.MinValueValidator(0), + validators.MaxValueValidator(999999999)]) if settings.COUNTRY == 'fr': saisine_type = forms.ChoiceField(label=_("Saisine type"), choices=models.SaisineType.get_types()) -- cgit v1.2.3