Fixed #14871, #14872 -- ZAIDField didn't handle alll EMPTY_VALUES correctly and ZAPostCodeField didn't respect *args or **kwargs (such as required=False). Also converted South African localflavor doctests into unittests. We have always been at war with doctests. Thanks to Idan Gazit.
Fixing ZA localflavor clean() #14872 git-svn-id: http://code.djangoproject.com/svn/django/trunk@14956 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
f4bc738e6b
commit
bc27405fc5
|
@ -22,14 +22,14 @@ class ZAIDField(Field):
|
||||||
}
|
}
|
||||||
|
|
||||||
def clean(self, value):
|
def clean(self, value):
|
||||||
# strip spaces and dashes
|
|
||||||
value = value.strip().replace(' ', '').replace('-', '')
|
|
||||||
|
|
||||||
super(ZAIDField, self).clean(value)
|
super(ZAIDField, self).clean(value)
|
||||||
|
|
||||||
if value in EMPTY_VALUES:
|
if value in EMPTY_VALUES:
|
||||||
return u''
|
return u''
|
||||||
|
|
||||||
|
# strip spaces and dashes
|
||||||
|
value = value.strip().replace(' ', '').replace('-', '')
|
||||||
|
|
||||||
match = re.match(id_re, value)
|
match = re.match(id_re, value)
|
||||||
|
|
||||||
if not match:
|
if not match:
|
||||||
|
@ -57,4 +57,4 @@ class ZAPostCodeField(RegexField):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(ZAPostCodeField, self).__init__(r'^\d{4}$',
|
super(ZAPostCodeField, self).__init__(r'^\d{4}$',
|
||||||
max_length=None, min_length=None)
|
max_length=None, min_length=None, *args, **kwargs)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
|
@ -1,40 +1,29 @@
|
||||||
tests = r"""
|
from django.contrib.localflavor.za.forms import ZAIDField, ZAPostCodeField
|
||||||
# ZAIDField #################################################################
|
|
||||||
|
|
||||||
ZAIDField validates that the date is a valid birthdate and that the value
|
from utils import LocalFlavorTestCase
|
||||||
has a valid checksum. It allows spaces and dashes, and returns a plain
|
|
||||||
string of digits.
|
|
||||||
>>> from django.contrib.localflavor.za.forms import ZAIDField
|
|
||||||
>>> f = ZAIDField()
|
|
||||||
>>> f.clean('0002290001003')
|
|
||||||
'0002290001003'
|
|
||||||
>>> f.clean('000229 0001 003')
|
|
||||||
'0002290001003'
|
|
||||||
>>> f.clean('0102290001001')
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
ValidationError: [u'Enter a valid South African ID number']
|
|
||||||
>>> f.clean('811208')
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
ValidationError: [u'Enter a valid South African ID number']
|
|
||||||
>>> f.clean('0002290001004')
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
ValidationError: [u'Enter a valid South African ID number']
|
|
||||||
|
|
||||||
# ZAPostCodeField ###########################################################
|
|
||||||
>>> from django.contrib.localflavor.za.forms import ZAPostCodeField
|
|
||||||
>>> f = ZAPostCodeField()
|
|
||||||
>>> f.clean('abcd')
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
ValidationError: [u'Enter a valid South African postal code']
|
|
||||||
>>> f.clean('0000')
|
|
||||||
u'0000'
|
|
||||||
>>> f.clean(' 7530')
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
ValidationError: [u'Enter a valid South African postal code']
|
|
||||||
|
|
||||||
"""
|
class ZALocalFlavorTests(LocalFlavorTestCase):
|
||||||
|
def test_ZAIDField(self):
|
||||||
|
error_invalid = [u'Enter a valid South African ID number']
|
||||||
|
valid = {
|
||||||
|
'0002290001003': '0002290001003',
|
||||||
|
'000229 0001 003': '0002290001003',
|
||||||
|
}
|
||||||
|
invalid = {
|
||||||
|
'0102290001001': error_invalid,
|
||||||
|
'811208': error_invalid,
|
||||||
|
'0002290001004': error_invalid,
|
||||||
|
}
|
||||||
|
self.assertFieldOutput(ZAIDField, valid, invalid)
|
||||||
|
|
||||||
|
def test_ZAPostCodeField(self):
|
||||||
|
error_invalid = [u'Enter a valid South African postal code']
|
||||||
|
valid = {
|
||||||
|
'0000': '0000',
|
||||||
|
}
|
||||||
|
invalid = {
|
||||||
|
'abcd': error_invalid,
|
||||||
|
' 7530': error_invalid,
|
||||||
|
}
|
||||||
|
self.assertFieldOutput(ZAPostCodeField, valid, invalid)
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
from localflavor.cz import tests as localflavor_cz_tests
|
from localflavor.cz import tests as localflavor_cz_tests
|
||||||
from localflavor.se import tests as localflavor_se_tests
|
from localflavor.se import tests as localflavor_se_tests
|
||||||
from localflavor.za import tests as localflavor_za_tests
|
|
||||||
|
|
||||||
from localflavor.ar import ARLocalFlavorTests
|
from localflavor.ar import ARLocalFlavorTests
|
||||||
from localflavor.at import ATLocalFlavorTests
|
from localflavor.at import ATLocalFlavorTests
|
||||||
|
@ -32,10 +30,10 @@ from localflavor.tr import TRLocalFlavorTests
|
||||||
from localflavor.uk import UKLocalFlavorTests
|
from localflavor.uk import UKLocalFlavorTests
|
||||||
from localflavor.us import USLocalFlavorTests
|
from localflavor.us import USLocalFlavorTests
|
||||||
from localflavor.uy import UYLocalFlavorTests
|
from localflavor.uy import UYLocalFlavorTests
|
||||||
|
from localflavor.za import ZALocalFlavorTests
|
||||||
|
|
||||||
|
|
||||||
__test__ = {
|
__test__ = {
|
||||||
'localflavor_cz_tests': localflavor_cz_tests,
|
'localflavor_cz_tests': localflavor_cz_tests,
|
||||||
'localflavor_se_tests': localflavor_se_tests,
|
'localflavor_se_tests': localflavor_se_tests,
|
||||||
'localflavor_za_tests': localflavor_za_tests,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,4 +42,5 @@ from regressiontests.forms.localflavortests import (
|
||||||
UKLocalFlavorTests,
|
UKLocalFlavorTests,
|
||||||
USLocalFlavorTests,
|
USLocalFlavorTests,
|
||||||
UYLocalFlavorTests,
|
UYLocalFlavorTests,
|
||||||
|
ZALocalFlavorTests,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue