Django

Code

Show
Ignore:
Timestamp:
12/17/07 02:05:27 (1 year ago)
Author:
mtredinnick
Message:

Fixed #5871 -- Factored out the validation errors in localflavor form fields. Brings them into line with the standard newforms fields. Patch from Jan Rademaker.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/localflavor/es/forms.py

    r6555 r6926  
    1616    between 01 and 52, assigned to provinces code. 
    1717    """ 
     18    default_error_messages = { 
     19        'invalid': _('Enter a valid postal code in the range and format 01XXX - 52XXX.'), 
     20    } 
     21 
    1822    def __init__(self, *args, **kwargs): 
    1923        super(ESPostalCodeField, self).__init__( 
    2024                r'^(0[1-9]|[1-4][0-9]|5[0-2])\d{3}$', 
    21                 max_length=None, min_length=None, 
    22                 error_message=_('Enter a valid postal code in the range and format 01XXX - 52XXX.'), 
    23                 *args, **kwargs) 
     25                max_length=None, min_length=None, *args, **kwargs) 
    2426 
    2527class ESPhoneNumberField(RegexField): 
     
    3436    TODO: accept and strip characters like dot, hyphen... in phone number 
    3537    """ 
     38    default_error_messages = { 
     39        'invalid': _('Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.'), 
     40    } 
     41 
    3642    def __init__(self, *args, **kwargs): 
    3743        super(ESPhoneNumberField, self).__init__(r'^(6|8|9)\d{8}$', 
    38                 max_length=None, min_length=None, 
    39                 error_message=_('Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.'), 
    40                 *args, **kwargs) 
     44                max_length=None, min_length=None, *args, **kwargs) 
    4145 
    4246class ESIdentityCardNumberField(RegexField): 
     
    5963    letters, so both validations are assumed true for all types. 
    6064    """ 
     65    default_error_messages = { 
     66        'invalid': _('Please enter a valid NIF, NIE, or CIF.'), 
     67        'invalid_only_nif': _('Please enter a valid NIF or NIE.'), 
     68        'invalid_nif': _('Invalid checksum for NIF.'), 
     69        'invalid_nie': _('Invalid checksum for NIE.'), 
     70        'invalid_cif': _('Invalid checksum for CIF.'), 
     71    } 
     72 
    6173    def __init__(self, only_nif=False, *args, **kwargs): 
    6274        self.only_nif = only_nif 
     
    6577        self.cif_types = 'ABCDEFGHKLMNPQS' 
    6678        self.nie_types = 'XT' 
    67         if self.only_nif: 
    68             self.id_types = 'NIF or NIE' 
    69         else: 
    70             self.id_types = 'NIF, NIE, or CIF' 
    7179        super(ESIdentityCardNumberField, self).__init__(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types + self.cif_types.lower() + self.nie_types.lower(), self.nif_control + self.nif_control.lower()), 
    7280                max_length=None, min_length=None, 
    73                 error_message=_('Please enter a valid %s.' % self.id_types)
     81                error_message=self.default_error_messages['invalid%s' % (self.only_nif and '_only_nif' or '')]
    7482                *args, **kwargs) 
    7583 
     
    8997                return value 
    9098            else: 
    91                 raise ValidationError, _('Invalid checksum for NIF.') 
     99                raise ValidationError, self.error_messages['invalid_nif'] 
    92100        elif letter1 in self.nie_types and letter2: 
    93101            # NIE 
     
    95103                return value 
    96104            else: 
    97                 raise ValidationError, _('Invalid checksum for NIE.') 
     105                raise ValidationError, self.error_messages['invalid_nie'] 
    98106        elif not self.only_nif and letter1 in self.cif_types and len(number) in [7, 8]: 
    99107            # CIF 
     
    104112                return value 
    105113            else: 
    106                 raise ValidationError, _('Invalid checksum for CIF.') 
     114                raise ValidationError, self.error_messages['invalid_cif'] 
    107115        else: 
    108             raise ValidationError, _('Please enter a valid %s.' % self.id_types) 
     116            raise ValidationError, self.error_messages['invalid'] 
    109117 
    110118class ESCCCField(RegexField): 
     
    131139        TODO: allow IBAN validation too 
    132140    """ 
     141    default_error_messages = { 
     142        'invalid': _('Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.'), 
     143        'checksum': _('Invalid checksum for bank account number.'), 
     144    } 
     145 
    133146    def __init__(self, *args, **kwargs): 
    134147        super(ESCCCField, self).__init__(r'^\d{4}[ -]?\d{4}[ -]?\d{2}[ -]?\d{10}$', 
    135             max_length=None, min_length=None, 
    136             error_message=_('Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.'), 
    137             *args, **kwargs) 
     148            max_length=None, min_length=None, *args, **kwargs) 
    138149 
    139150    def clean(self, value): 
     
    148159            return value 
    149160        else: 
    150             raise ValidationError, _('Invalid checksum for bank account number.') 
     161            raise ValidationError, self.error_messages['checksum'] 
    151162 
    152163class ESRegionSelect(Select):