summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-08-16 07:00:30 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-08-16 07:00:30 +0000
commitcbcc4159342288f6866f2006c30dd16740703049 (patch)
tree73539f772412b9354f44e870cf1b186a730405d9
parent77c949289e8cc93df47997c44b8710217996cf63 (diff)
Fixed #8229: Added handling for a special case in the validation of Spanish ID numbers. Thanks to Marc Garcia for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8405 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/localflavor/es/forms.py4
-rw-r--r--tests/regressiontests/forms/localflavor/es.py2
2 files changed, 4 insertions, 2 deletions
diff --git a/django/contrib/localflavor/es/forms.py b/django/contrib/localflavor/es/forms.py
index 522f5f4696..145bf90768 100644
--- a/django/contrib/localflavor/es/forms.py
+++ b/django/contrib/localflavor/es/forms.py
@@ -108,7 +108,7 @@ class ESIdentityCardNumberField(RegexField):
if not letter2:
number, letter2 = number[:-1], int(number[-1])
checksum = cif_get_checksum(number)
- if letter2 in [checksum, self.cif_control[checksum]]:
+ if letter2 in (checksum, self.cif_control[checksum]):
return value
else:
raise ValidationError, self.error_messages['invalid_cif']
@@ -180,5 +180,5 @@ class ESProvinceSelect(Select):
def cif_get_checksum(number):
s1 = sum([int(digit) for pos, digit in enumerate(number) if int(pos) % 2])
s2 = sum([sum([int(unit) for unit in str(int(digit) * 2)]) for pos, digit in enumerate(number) if not int(pos) % 2])
- return 10 - ((s1 + s2) % 10)
+ return (10 - ((s1 + s2) % 10)) % 10
diff --git a/tests/regressiontests/forms/localflavor/es.py b/tests/regressiontests/forms/localflavor/es.py
index f149aa9cbe..66d18dd0fc 100644
--- a/tests/regressiontests/forms/localflavor/es.py
+++ b/tests/regressiontests/forms/localflavor/es.py
@@ -167,6 +167,8 @@ Traceback (most recent call last):
ValidationError: [u'Invalid checksum for NIE.']
>>> f.clean('B38790911')
'B38790911'
+>>> f.clean('B31234560')
+'B31234560'
>>> f.clean('B-3879091A')
'B3879091A'
>>> f.clean('B 38790917')