Fixed #9259 -- Fixed a validation error for Spanish identity card numbers.
Patch from Marc Garcia. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9129 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
cff78c60ac
commit
7cec38b076
|
@ -76,8 +76,8 @@ class ESIdentityCardNumberField(RegexField):
|
||||||
self.cif_control = 'JABCDEFGHI'
|
self.cif_control = 'JABCDEFGHI'
|
||||||
self.cif_types = 'ABCDEFGHKLMNPQS'
|
self.cif_types = 'ABCDEFGHKLMNPQS'
|
||||||
self.nie_types = 'XT'
|
self.nie_types = 'XT'
|
||||||
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()),
|
id_card_re = re.compile(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control + self.cif_control), re.IGNORECASE)
|
||||||
max_length=None, min_length=None,
|
super(ESIdentityCardNumberField, self).__init__(id_card_re, max_length=None, min_length=None,
|
||||||
error_message=self.default_error_messages['invalid%s' % (self.only_nif and '_only_nif' or '')],
|
error_message=self.default_error_messages['invalid%s' % (self.only_nif and '_only_nif' or '')],
|
||||||
*args, **kwargs)
|
*args, **kwargs)
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ class ESIdentityCardNumberField(RegexField):
|
||||||
nif_get_checksum = lambda d: self.nif_control[int(d)%23]
|
nif_get_checksum = lambda d: self.nif_control[int(d)%23]
|
||||||
|
|
||||||
value = value.upper().replace(' ', '').replace('-', '')
|
value = value.upper().replace(' ', '').replace('-', '')
|
||||||
m = re.match(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control), value)
|
m = re.match(r'^([%s]?)[ -]?(\d+)[ -]?([%s]?)$' % (self.cif_types + self.nie_types, self.nif_control + self.cif_control), value)
|
||||||
letter1, number, letter2 = m.groups()
|
letter1, number, letter2 = m.groups()
|
||||||
|
|
||||||
if not letter1 and letter2:
|
if not letter1 and letter2:
|
||||||
|
|
|
@ -157,6 +157,8 @@ ValidationError: [u'Invalid checksum for NIF.']
|
||||||
'X3287690R'
|
'X3287690R'
|
||||||
>>> f.clean('t-03287690r')
|
>>> f.clean('t-03287690r')
|
||||||
'T03287690R'
|
'T03287690R'
|
||||||
|
>>> f.clean('P2907500I')
|
||||||
|
'P2907500I'
|
||||||
>>> f.clean('X-03287690')
|
>>> f.clean('X-03287690')
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
|
|
Loading…
Reference in New Issue