From c3697a091b7ff0d19f13821b18516ec8eaa1b8f8 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sat, 7 Jan 2012 11:17:44 +0000 Subject: [PATCH] Fixed #10756 -- Error in the formats accepted by PLNIPField. Thanks remik for the report, michalm for the patch and claudep for the review. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17346 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/localflavor/pl/forms.py | 6 +++--- docs/ref/contrib/localflavor.txt | 4 ++-- tests/regressiontests/localflavor/pl/tests.py | 6 ++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/django/contrib/localflavor/pl/forms.py b/django/contrib/localflavor/pl/forms.py index ffa9ec40879..3e8d73f0f25 100644 --- a/django/contrib/localflavor/pl/forms.py +++ b/django/contrib/localflavor/pl/forms.py @@ -122,18 +122,18 @@ class PLNationalIDCardNumberField(RegexField): class PLNIPField(RegexField): """ A form field that validates as Polish Tax Number (NIP). - Valid forms are: XXX-XXX-YY-YY or XX-XX-YYY-YYY. + Valid forms are: XXX-YYY-YY-YY, XXX-YY-YY-YYY or XXXYYYYYYY. Checksum algorithm based on documentation at http://wipos.p.lodz.pl/zylla/ut/nip-rego.html """ default_error_messages = { - 'invalid': _(u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX.'), + 'invalid': _(u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX.'), 'checksum': _(u'Wrong checksum for the Tax Number (NIP).'), } def __init__(self, max_length=None, min_length=None, *args, **kwargs): - super(PLNIPField, self).__init__(r'^\d{3}-\d{3}-\d{2}-\d{2}$|^\d{2}-\d{2}-\d{3}-\d{3}$', + super(PLNIPField, self).__init__(r'^\d{3}-\d{3}-\d{2}-\d{2}$|^\d{3}-\d{2}-\d{2}-\d{3}$|^\d{10}$', max_length, min_length, *args, **kwargs) def clean(self,value): diff --git a/docs/ref/contrib/localflavor.txt b/docs/ref/contrib/localflavor.txt index 4671906fa1a..1593598ba37 100644 --- a/docs/ref/contrib/localflavor.txt +++ b/docs/ref/contrib/localflavor.txt @@ -960,8 +960,8 @@ Poland (``pl``) .. class:: pl.forms.PLNIPField - A form field that validates input as a Polish Tax Number (NIP). Valid - formats are XXX-XXX-XX-XX or XX-XX-XXX-XXX. The checksum algorithm used + A form field that validates input as a Polish Tax Number (NIP). Valid formats + are XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX. The checksum algorithm used for NIPs is documented at http://wipos.p.lodz.pl/zylla/ut/nip-rego.html. .. class:: pl.forms.PLCountySelect diff --git a/tests/regressiontests/localflavor/pl/tests.py b/tests/regressiontests/localflavor/pl/tests.py index 8c7af38397c..52154f8804b 100644 --- a/tests/regressiontests/localflavor/pl/tests.py +++ b/tests/regressiontests/localflavor/pl/tests.py @@ -420,14 +420,16 @@ class PLLocalFlavorTests(SimpleTestCase): self.assertFieldOutput(PLPostalCodeField, valid, invalid) def test_PLNIPField(self): - error_format = [u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX.'] + error_format = [u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX.'] error_checksum = [u'Wrong checksum for the Tax Number (NIP).'] valid = { - '64-62-414-124': '6462414124', '646-241-41-24': '6462414124', + '646-24-14-124': '6462414124', + '6462414124': '6462414124', } invalid = { '43-343-234-323': error_format, + '64-62-414-124': error_format, '646-241-41-23': error_checksum, } self.assertFieldOutput(PLNIPField, valid, invalid)