Author: jezdez Date: 2011-06-28 03:44:33 -0700 (Tue, 28 Jun 2011) New Revision: 16480
Added: django/trunk/tests/regressiontests/forms/localflavor/in_.py Modified: django/trunk/django/contrib/localflavor/in_/forms.py django/trunk/django/contrib/localflavor/in_/in_states.py django/trunk/tests/regressiontests/forms/localflavortests.py django/trunk/tests/regressiontests/forms/tests/__init__.py Log: Fixed #15813 -- Updated Indian localflavor to use correct state choices and fixed various other bugs. Thanks, jsdalton. Modified: django/trunk/django/contrib/localflavor/in_/forms.py =================================================================== --- django/trunk/django/contrib/localflavor/in_/forms.py 2011-06-28 10:17:56 UTC (rev 16479) +++ django/trunk/django/contrib/localflavor/in_/forms.py 2011-06-28 10:44:33 UTC (rev 16480) @@ -1,24 +1,32 @@ """ India-specific Form helpers. """ +import re from django.core.validators import EMPTY_VALUES from django.forms import ValidationError from django.forms.fields import Field, RegexField, Select from django.utils.encoding import smart_unicode -from django.utils.translation import gettext -import re +from django.utils.translation import ugettext_lazy as _ class INZipCodeField(RegexField): default_error_messages = { - 'invalid': gettext(u'Enter a zip code in the format XXXXXXX.'), + 'invalid': _(u'Enter a zip code in the format XXXXXX or XXX XXX.'), } def __init__(self, max_length=None, min_length=None, *args, **kwargs): - super(INZipCodeField, self).__init__(r'^\d{6}$', + super(INZipCodeField, self).__init__(r'^\d{3}\s?\d{3}$', max_length, min_length, *args, **kwargs) + def clean(self, value): + super(INZipCodeField, self).clean(value) + if value in EMPTY_VALUES: + return u'' + # Convert to "NNNNNN" if "NNN NNN" given + value = re.sub(r'^(\d{3})\s(\d{3})$', r'\1\2', value) + return value + class INStateField(Field): """ A form field that validates its input is a Indian state name or @@ -26,7 +34,7 @@ registration abbreviation for the given state or union territory """ default_error_messages = { - 'invalid': u'Enter a Indian state or territory.', + 'invalid': _(u'Enter an Indian state or territory.'), } def clean(self, value): Modified: django/trunk/django/contrib/localflavor/in_/in_states.py =================================================================== --- django/trunk/django/contrib/localflavor/in_/in_states.py 2011-06-28 10:17:56 UTC (rev 16479) +++ django/trunk/django/contrib/localflavor/in_/in_states.py 2011-06-28 10:44:33 UTC (rev 16480) @@ -47,37 +47,87 @@ ) STATES_NORMALIZED = { - 'ka': 'KA', - 'karnatka': 'KA', - 'tn': 'TN', - 'tamilnad': 'TN', - 'tamilnadu': 'TN', + 'an': 'AN', + 'andaman and nicobar': 'AN', 'andra pradesh': 'AP', 'andrapradesh': 'AP', 'andhrapradesh': 'AP', - 'maharastra': 'MH', - 'mh': 'MH', 'ap': 'AP', + 'andhra pradesh': 'AP', + 'ar': 'AR', + 'arunachal pradesh': 'AR', + 'assam': 'AS', + 'as': 'AS', + 'bihar': 'BR', + 'br': 'BR', + 'cg': 'CG', + 'chattisgarh': 'CG', + 'ch': 'CH', + 'chandigarh': 'CH', + 'daman and diu': 'DD', + 'dd': 'DD', 'dl': 'DL', - 'dd': 'DD', - 'br': 'BR', - 'ar': 'AR', - 'sk': 'SK', - 'kl': 'KL', + 'delhi': 'DL', + 'dn': 'DN', + 'dadra and nagar haveli': 'DN', 'ga': 'GA', - 'rj': 'RJ', - 'rajastan': 'RJ', - 'rajasthan': 'RJ', + 'goa': 'GA', + 'gj': 'GJ', + 'gujarat': 'GJ', + 'himachal pradesh': 'HP', 'hp': 'HP', - 'ua': 'UA', - 'up': 'UP', + 'hr': 'HR', + 'haryana': 'HR', + 'jharkhand': 'JH', + 'jh': 'JH', + 'jammu and kashmir': 'JK', + 'jk': 'JK', + 'karnataka': 'KA', + 'karnatka': 'KA', + 'ka': 'KA', + 'kerala': 'KL', + 'kl': 'KL', + 'ld': 'LD', + 'lakshadweep': 'LD', + 'maharastra': 'MH', + 'mh': 'MH', + 'maharashtra': 'MH', + 'meghalaya': 'ML', + 'ml': 'ML', + 'mn': 'MN', + 'manipur': 'MN', + 'madhya pradesh': 'MP', 'mp': 'MP', + 'mizoram': 'MZ', + 'mizo': 'MZ', 'mz': 'MZ', - 'bengal': 'WB', - 'westbengal': 'WB', - 'mizo': 'MZ', + 'nl': 'NL', + 'nagaland': 'NL', + 'orissa': 'OR', + 'odisa': 'OR', 'orisa': 'OR', - 'odisa': 'OR', 'or': 'OR', + 'pb': 'PB', + 'punjab': 'PB', + 'py': 'PY', + 'pondicherry': 'PY', + 'rajasthan': 'RJ', + 'rajastan': 'RJ', + 'rj': 'RJ', + 'sikkim': 'SK', + 'sk': 'SK', + 'tamil nadu': 'TN', + 'tn': 'TN', + 'tamilnadu': 'TN', + 'tamilnad': 'TN', + 'tr': 'TR', + 'tripura': 'TR', + 'ua': 'UA', + 'uttarakhand': 'UA', + 'up': 'UP', + 'uttar pradesh': 'UP', + 'westbengal': 'WB', + 'bengal': 'WB', + 'wb': 'WB', + 'west bengal': 'WB' } - Added: django/trunk/tests/regressiontests/forms/localflavor/in_.py =================================================================== --- django/trunk/tests/regressiontests/forms/localflavor/in_.py (rev 0) +++ django/trunk/tests/regressiontests/forms/localflavor/in_.py 2011-06-28 10:44:33 UTC (rev 16480) @@ -0,0 +1,158 @@ +import warnings + +from django.contrib.localflavor.in_.forms import (INZipCodeField, + INStateField, INStateSelect) + +from utils import LocalFlavorTestCase + + +class INLocalFlavorTests(LocalFlavorTestCase): + def test_INPStateSelect(self): + f = INStateSelect() + out = u'''<select name="state"> +<option value="KA">Karnataka</option> +<option value="AP" selected="selected">Andhra Pradesh</option> +<option value="KL">Kerala</option> +<option value="TN">Tamil Nadu</option> +<option value="MH">Maharashtra</option> +<option value="UP">Uttar Pradesh</option> +<option value="GA">Goa</option> +<option value="GJ">Gujarat</option> +<option value="RJ">Rajasthan</option> +<option value="HP">Himachal Pradesh</option> +<option value="JK">Jammu and Kashmir</option> +<option value="AR">Arunachal Pradesh</option> +<option value="AS">Assam</option> +<option value="BR">Bihar</option> +<option value="CG">Chattisgarh</option> +<option value="HR">Haryana</option> +<option value="JH">Jharkhand</option> +<option value="MP">Madhya Pradesh</option> +<option value="MN">Manipur</option> +<option value="ML">Meghalaya</option> +<option value="MZ">Mizoram</option> +<option value="NL">Nagaland</option> +<option value="OR">Orissa</option> +<option value="PB">Punjab</option> +<option value="SK">Sikkim</option> +<option value="TR">Tripura</option> +<option value="UA">Uttarakhand</option> +<option value="WB">West Bengal</option> +<option value="AN">Andaman and Nicobar</option> +<option value="CH">Chandigarh</option> +<option value="DN">Dadra and Nagar Haveli</option> +<option value="DD">Daman and Diu</option> +<option value="DL">Delhi</option> +<option value="LD">Lakshadweep</option> +<option value="PY">Pondicherry</option> +</select>''' + self.assertEqual(f.render('state', 'AP'), out) + + def test_INZipCodeField(self): + error_format = [u'Enter a zip code in the format XXXXXX or XXX XXX.'] + valid = { + '360311': '360311', + '360 311': '360311', + } + invalid = { + '36 0311': error_format, + '3603111': error_format, + '360 31': error_format, + '36031': error_format, + 'O2B 2R3': error_format + } + self.assertFieldOutput(INZipCodeField, valid, invalid) + + def test_INStateField(self): + error_format = [u'Enter an Indian state or territory.'] + valid = { + 'an': 'AN', + 'AN': 'AN', + 'andaman and nicobar': 'AN', + 'andra pradesh': 'AP', + 'andrapradesh': 'AP', + 'andhrapradesh': 'AP', + 'ap': 'AP', + 'andhra pradesh': 'AP', + 'ar': 'AR', + 'arunachal pradesh': 'AR', + 'assam': 'AS', + 'as': 'AS', + 'bihar': 'BR', + 'br': 'BR', + 'cg': 'CG', + 'chattisgarh': 'CG', + 'ch': 'CH', + 'chandigarh': 'CH', + 'daman and diu': 'DD', + 'dd': 'DD', + 'dl': 'DL', + 'delhi': 'DL', + 'dn': 'DN', + 'dadra and nagar haveli': 'DN', + 'ga': 'GA', + 'goa': 'GA', + 'gj': 'GJ', + 'gujarat': 'GJ', + 'himachal pradesh': 'HP', + 'hp': 'HP', + 'hr': 'HR', + 'haryana': 'HR', + 'jharkhand': 'JH', + 'jh': 'JH', + 'jammu and kashmir': 'JK', + 'jk': 'JK', + 'karnataka': 'KA', + 'karnatka': 'KA', + 'ka': 'KA', + 'kerala': 'KL', + 'kl': 'KL', + 'ld': 'LD', + 'lakshadweep': 'LD', + 'maharastra': 'MH', + 'mh': 'MH', + 'maharashtra': 'MH', + 'meghalaya': 'ML', + 'ml': 'ML', + 'mn': 'MN', + 'manipur': 'MN', + 'madhya pradesh': 'MP', + 'mp': 'MP', + 'mizoram': 'MZ', + 'mizo': 'MZ', + 'mz': 'MZ', + 'nl': 'NL', + 'nagaland': 'NL', + 'orissa': 'OR', + 'odisa': 'OR', + 'orisa': 'OR', + 'or': 'OR', + 'pb': 'PB', + 'punjab': 'PB', + 'py': 'PY', + 'pondicherry': 'PY', + 'rajasthan': 'RJ', + 'rajastan': 'RJ', + 'rj': 'RJ', + 'sikkim': 'SK', + 'sk': 'SK', + 'tamil nadu': 'TN', + 'tn': 'TN', + 'tamilnadu': 'TN', + 'tamilnad': 'TN', + 'tr': 'TR', + 'tripura': 'TR', + 'ua': 'UA', + 'uttarakhand': 'UA', + 'up': 'UP', + 'uttar pradesh': 'UP', + 'westbengal': 'WB', + 'bengal': 'WB', + 'wb': 'WB', + 'west bengal': 'WB' + } + invalid = { + 'florida': error_format, + 'FL': error_format, + } + self.assertFieldOutput(INStateField, valid, invalid) Modified: django/trunk/tests/regressiontests/forms/localflavortests.py =================================================================== --- django/trunk/tests/regressiontests/forms/localflavortests.py 2011-06-28 10:17:56 UTC (rev 16479) +++ django/trunk/tests/regressiontests/forms/localflavortests.py 2011-06-28 10:44:33 UTC (rev 16480) @@ -20,6 +20,7 @@ from localflavor.ie import IELocalFlavorTests from localflavor.il import ILLocalFlavorTests from localflavor.is_ import ISLocalFlavorTests +from localflavor.in_ import INLocalFlavorTests from localflavor.it import ITLocalFlavorTests from localflavor.jp import JPLocalFlavorTests from localflavor.kw import KWLocalFlavorTests Modified: django/trunk/tests/regressiontests/forms/tests/__init__.py =================================================================== --- django/trunk/tests/regressiontests/forms/tests/__init__.py 2011-06-28 10:17:56 UTC (rev 16479) +++ django/trunk/tests/regressiontests/forms/tests/__init__.py 2011-06-28 10:44:33 UTC (rev 16480) @@ -33,6 +33,7 @@ IELocalFlavorTests, ILLocalFlavorTests, ISLocalFlavorTests, + INLocalFlavorTests, ITLocalFlavorTests, JPLocalFlavorTests, KWLocalFlavorTests, -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.