diff --git a/django/contrib/localflavor/cz/forms.py b/django/contrib/localflavor/cz/forms.py
index 13a94af05c..320a2a8c49 100644
--- a/django/contrib/localflavor/cz/forms.py
+++ b/django/contrib/localflavor/cz/forms.py
@@ -73,7 +73,7 @@ class CZBirthNumberField(Field):
import warnings
warnings.warn(
"Support for validating the gender of a CZ Birth number has been deprecated.",
- DeprecationWarning)
+ PendingDeprecationWarning)
if gender == 'f':
female_const = 50
elif gender == 'm':
diff --git a/docs/releases/1.3.txt b/docs/releases/1.3.txt
index af40156410..4a5631e264 100644
--- a/docs/releases/1.3.txt
+++ b/docs/releases/1.3.txt
@@ -539,3 +539,11 @@ GeoDjango
to indicate possible faulty application code. A warning is now raised
if :meth:`~django.contrib.gis.geos.GEOSGeometry.transform` is called when
the SRID of the geometry is less than 0 or ``None``.
+
+``CZBirthNumberField.clean``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Previously this field's ``clean()`` method accepted a second, gender, argument
+which allowed stronger validation checks to be made, however since this
+argument could never actually be passed from the Django form machinery it is
+now pending deprecation.
diff --git a/tests/regressiontests/forms/localflavor/cz.py b/tests/regressiontests/forms/localflavor/cz.py
index 4cff172529..e9419d39e7 100644
--- a/tests/regressiontests/forms/localflavor/cz.py
+++ b/tests/regressiontests/forms/localflavor/cz.py
@@ -1,126 +1,105 @@
-# -*- coding: utf-8 -*-
-# Tests for the contrib/localflavor/ CZ Form Fields
+import warnings
-tests = r"""
-# CZPostalCodeField #########################################################
+from django.contrib.localflavor.cz.forms import (CZPostalCodeField,
+ CZRegionSelect, CZBirthNumberField, CZICNumberField)
->>> from django.contrib.localflavor.cz.forms import CZPostalCodeField
->>> f = CZPostalCodeField()
->>> f.clean('84545x')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.']
->>> f.clean('91909')
-u'91909'
->>> f.clean('917 01')
-u'91701'
->>> f.clean('12345')
-u'12345'
->>> f.clean('123456')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.']
->>> f.clean('1234')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.']
->>> f.clean('123 4')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.']
+from django.core.exceptions import ValidationError
+from utils import LocalFlavorTestCase
-# CZRegionSelect ############################################################
->>> from django.contrib.localflavor.cz.forms import CZRegionSelect
->>> w = CZRegionSelect()
->>> w.render('regions', 'TT')
-u''
+class CZLocalFlavorTests(LocalFlavorTestCase):
+ def setUp(self):
+ self.save_warnings_state()
+ warnings.filterwarnings(
+ "ignore",
+ category=PendingDeprecationWarning,
+ module='django.contrib.localflavor.cz.forms'
+ )
-# CZBirthNumberField ########################################################
+ def tearDown(self):
+ self.restore_warnings_state()
->>> from django.contrib.localflavor.cz.forms import CZBirthNumberField
->>> f = CZBirthNumberField()
->>> f.clean('880523/1237')
-u'880523/1237'
->>> f.clean('8805231237')
-u'8805231237'
->>> f.clean('880523/000')
-u'880523/000'
->>> f.clean('880523000')
-u'880523000'
->>> f.clean('882101/0011')
-u'882101/0011'
->>> f.clean('880523/1237', 'm')
-u'880523/1237'
->>> f.clean('885523/1231', 'f')
-u'885523/1231'
->>> f.clean('123456/12')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
->>> f.clean('123456/12345')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
->>> f.clean('12345612')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
->>> f.clean('12345612345')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
->>> f.clean('881523/0000', 'm')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('885223/0000', 'm')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('881223/0000', 'f')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('886523/0000', 'f')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('880523/1239')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('8805231239')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
->>> f.clean('990101/0011')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid birth number.']
+ def test_CZRegionSelect(self):
+ f = CZRegionSelect()
+ out = u''''''
+ self.assertEqual(f.render('regions', 'TT'), out)
-# CZICNumberField ########################################################
+ def test_CZPostalCodeField(self):
+ error_format = [u'Enter a postal code in the format XXXXX or XXX XX.']
+ valid = {
+ '91909': '91909',
+ '917 01': '91701',
+ '12345': '12345',
+ }
+ invalid = {
+ '84545x': error_format,
+ '123456': error_format,
+ '1234': error_format,
+ '123 4': error_format,
+ }
+ self.assertFieldOutput(CZPostalCodeField, valid, invalid)
->>> from django.contrib.localflavor.cz.forms import CZICNumberField
->>> f = CZICNumberField()
->>> f.clean('12345679')
-u'12345679'
->>> f.clean('12345601')
-u'12345601'
->>> f.clean('12345661')
-u'12345661'
->>> f.clean('12345610')
-u'12345610'
->>> f.clean('1234567')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid IC number.']
->>> f.clean('12345660')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid IC number.']
->>> f.clean('12345600')
-Traceback (most recent call last):
-...
-ValidationError: [u'Enter a valid IC number.']
-"""
+ def test_CZBirthNumberField(self):
+ error_format = [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
+ error_invalid = [u'Enter a valid birth number.']
+ valid = {
+ '880523/1237': '880523/1237',
+ '8805231237': '8805231237',
+ '880523/000': '880523/000',
+ '880523000': '880523000',
+ '882101/0011': '882101/0011',
+ }
+ invalid = {
+ '123456/12': error_format,
+ '123456/12345': error_format,
+ '12345612': error_format,
+ '12345612345': error_format,
+ '880523/1239': error_invalid,
+ '8805231239': error_invalid,
+ '990101/0011': error_invalid,
+ }
+ self.assertFieldOutput(CZBirthNumberField, valid, invalid)
+
+ # These tests should go away in 1.4.
+ # http://code.djangoproject.com/ticket/14593
+ f = CZBirthNumberField()
+ self.assertEqual(f.clean('880523/1237', 'm'), '880523/1237'),
+ self.assertEqual(f.clean('885523/1231', 'f'), '885523/1231')
+ self.assertRaisesRegexp(ValidationError, unicode(error_invalid),
+ f.clean, '881523/0000', 'm')
+ self.assertRaisesRegexp(ValidationError, unicode(error_invalid),
+ f.clean, '885223/0000', 'm')
+ self.assertRaisesRegexp(ValidationError, unicode(error_invalid),
+ f.clean, '881523/0000', 'f')
+ self.assertRaisesRegexp(ValidationError, unicode(error_invalid),
+ f.clean, '885223/0000', 'f')
+
+ def test_CZICNumberField(self):
+ error_invalid = [u'Enter a valid IC number.']
+ valid ={
+ '12345679': '12345679',
+ '12345601': '12345601',
+ '12345661': '12345661',
+ '12345610': '12345610',
+ }
+ invalid = {
+ '1234567': error_invalid,
+ '12345660': error_invalid,
+ '12345600': error_invalid,
+ }
+ self.assertFieldOutput(CZICNumberField, valid, invalid)
diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py
index befc0a7512..5ee1c32acc 100644
--- a/tests/regressiontests/forms/localflavortests.py
+++ b/tests/regressiontests/forms/localflavortests.py
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from localflavor.cz import tests as localflavor_cz_tests
-
from localflavor.ar import ARLocalFlavorTests
from localflavor.at import ATLocalFlavorTests
from localflavor.au import AULocalFlavorTests
@@ -9,6 +6,7 @@ from localflavor.br import BRLocalFlavorTests
from localflavor.ca import CALocalFlavorTests
from localflavor.ch import CHLocalFlavorTests
from localflavor.cl import CLLocalFlavorTests
+from localflavor.cz import CZLocalFlavorTests
from localflavor.de import DELocalFlavorTests
from localflavor.es import ESLocalFlavorTests
from localflavor.fi import FILocalFlavorTests
@@ -33,7 +31,3 @@ from localflavor.us import USLocalFlavorTests
from localflavor.uy import UYLocalFlavorTests
from localflavor.za import ZALocalFlavorTests
-
-__test__ = {
- 'localflavor_cz_tests': localflavor_cz_tests,
-}
diff --git a/tests/regressiontests/forms/tests/__init__.py b/tests/regressiontests/forms/tests/__init__.py
index 4f24f52c6d..2d96b2fae8 100644
--- a/tests/regressiontests/forms/tests/__init__.py
+++ b/tests/regressiontests/forms/tests/__init__.py
@@ -12,36 +12,15 @@ from validators import TestFieldWithValidators
from widgets import *
from regressiontests.forms.localflavortests import (
- __test__,
- ARLocalFlavorTests,
- ATLocalFlavorTests,
- AULocalFlavorTests,
- BELocalFlavorTests,
- BRLocalFlavorTests,
- CALocalFlavorTests,
- CHLocalFlavorTests,
- CLLocalFlavorTests,
- DELocalFlavorTests,
- ESLocalFlavorTests,
- FILocalFlavorTests,
- FRLocalFlavorTests,
- GenericLocalFlavorTests,
- IDLocalFlavorTests,
- IELocalFlavorTests,
- ILLocalFlavorTests,
- ISLocalFlavorTests,
- ITLocalFlavorTests,
- JPLocalFlavorTests,
- KWLocalFlavorTests,
- NLLocalFlavorTests,
- PLLocalFlavorTests,
- PTLocalFlavorTests,
- ROLocalFlavorTests,
- SELocalFlavorTests,
- SKLocalFlavorTests,
- TRLocalFlavorTests,
- UKLocalFlavorTests,
- USLocalFlavorTests,
- UYLocalFlavorTests,
- ZALocalFlavorTests,
+ ARLocalFlavorTests, ATLocalFlavorTests, AULocalFlavorTests,
+ BELocalFlavorTests, BRLocalFlavorTests, CALocalFlavorTests,
+ CHLocalFlavorTests, CLLocalFlavorTests, CZLocalFlavorTests,
+ DELocalFlavorTests, ESLocalFlavorTests, FILocalFlavorTests,
+ FRLocalFlavorTests, GenericLocalFlavorTests, IDLocalFlavorTests,
+ IELocalFlavorTests, ILLocalFlavorTests, ISLocalFlavorTests,
+ ITLocalFlavorTests, JPLocalFlavorTests, KWLocalFlavorTests,
+ NLLocalFlavorTests, PLLocalFlavorTests, PTLocalFlavorTests,
+ ROLocalFlavorTests, SELocalFlavorTests, SKLocalFlavorTests,
+ TRLocalFlavorTests, UKLocalFlavorTests, USLocalFlavorTests,
+ UYLocalFlavorTests, ZALocalFlavorTests
)