Fixed #18102 -- Defined min/max_length on French localflavor form fields

Thanks mothsART for the report and the initial patch.
This commit is contained in:
Claude Paroz 2012-06-30 13:18:07 +02:00
parent b9ecbedb31
commit 47da7b7a9a
2 changed files with 9 additions and 5 deletions

View File

@ -8,7 +8,7 @@ import re
from django.contrib.localflavor.fr.fr_department import DEPARTMENT_CHOICES from django.contrib.localflavor.fr.fr_department import DEPARTMENT_CHOICES
from django.core.validators import EMPTY_VALUES from django.core.validators import EMPTY_VALUES
from django.forms import ValidationError from django.forms import ValidationError
from django.forms.fields import Field, RegexField, Select from django.forms.fields import CharField, RegexField, Select
from django.utils.encoding import smart_unicode from django.utils.encoding import smart_unicode
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -20,11 +20,11 @@ class FRZipCodeField(RegexField):
'invalid': _('Enter a zip code in the format XXXXX.'), 'invalid': _('Enter a zip code in the format XXXXX.'),
} }
def __init__(self, max_length=None, min_length=None, *args, **kwargs): def __init__(self, max_length=5, min_length=5, *args, **kwargs):
super(FRZipCodeField, self).__init__(r'^\d{5}$', super(FRZipCodeField, self).__init__(r'^\d{5}$',
max_length, min_length, *args, **kwargs) max_length, min_length, *args, **kwargs)
class FRPhoneNumberField(Field): class FRPhoneNumberField(CharField):
""" """
Validate local French phone number (not international ones) Validate local French phone number (not international ones)
The correct format is '0X XX XX XX XX'. The correct format is '0X XX XX XX XX'.
@ -35,6 +35,10 @@ class FRPhoneNumberField(Field):
'invalid': _('Phone numbers must be in 0X XX XX XX XX format.'), 'invalid': _('Phone numbers must be in 0X XX XX XX XX format.'),
} }
def __init__(self, max_length=14, min_length=10, *args, **kwargs):
super(FRPhoneNumberField, self).__init__(
max_length, min_length, *args, **kwargs)
def clean(self, value): def clean(self, value):
super(FRPhoneNumberField, self).clean(value) super(FRPhoneNumberField, self).clean(value)
if value in EMPTY_VALUES: if value in EMPTY_VALUES:
@ -51,4 +55,3 @@ class FRDepartmentSelect(Select):
""" """
def __init__(self, attrs=None): def __init__(self, attrs=None):
super(FRDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES) super(FRDepartmentSelect, self).__init__(attrs, choices=DEPARTMENT_CHOICES)

View File

@ -16,7 +16,8 @@ class FRLocalFlavorTests(SimpleTestCase):
} }
invalid = { invalid = {
'2A200': error_format, '2A200': error_format,
'980001': error_format, '980001': ['Ensure this value has at most 5 characters (it has 6).'
] + error_format,
} }
self.assertFieldOutput(FRZipCodeField, valid, invalid) self.assertFieldOutput(FRZipCodeField, valid, invalid)