Ticket #15813: 15813.indian-localflavor-fixes.diff

File 15813.indian-localflavor-fixes.diff, 10.1 KB (added by Julien Phalip, 13 years ago)
  • django/contrib/localflavor/in_/forms.py

    diff --git a/django/contrib/localflavor/in_/forms.py b/django/contrib/localflavor/in_/forms.py
    index c94c7e7..8936f58 100644
    a b import re  
    1212
    1313class INZipCodeField(RegexField):
    1414    default_error_messages = {
    15         'invalid': gettext(u'Enter a zip code in the format XXXXXXX.'),
     15        'invalid': gettext(u'Enter a zip code in the format XXXXXX or XXX XXX.'),
    1616    }
    1717
    1818    def __init__(self, max_length=None, min_length=None, *args, **kwargs):
    19         super(INZipCodeField, self).__init__(r'^\d{6}$',
     19        super(INZipCodeField, self).__init__(r'^\d{3}\s?\d{3}$',
    2020            max_length, min_length, *args, **kwargs)
     21   
     22    def clean(self, value):
     23        super(INZipCodeField, self).clean(value)
     24        if value in EMPTY_VALUES:
     25            return u''
     26        # Convert to "NNNNNN" if "NNN NNN" given
     27        value = re.sub(r'^(\d{3})\s(\d{3})$', r'\1\2', value)
     28        return value
    2129
    2230class INStateField(Field):
    2331    """
    class INStateField(Field):  
    2634    registration abbreviation for the given state or union territory
    2735    """
    2836    default_error_messages = {
    29         'invalid': u'Enter a Indian state or territory.',
     37        'invalid': u'Enter an Indian state or territory.',
    3038    }
    3139
    3240    def clean(self, value):
  • django/contrib/localflavor/in_/in_states.py

    diff --git a/django/contrib/localflavor/in_/in_states.py b/django/contrib/localflavor/in_/in_states.py
    index bb4a748..fad6bae 100644
    a b STATE_CHOICES = (  
    4747)
    4848
    4949STATES_NORMALIZED = {
    50     'ka': 'KA',
    51     'karnatka': 'KA',
    52     'tn': 'TN',
    53     'tamilnad': 'TN',
    54     'tamilnadu': 'TN',
     50    'an': 'AN',
     51    'andaman and nicobar': 'AN',
    5552    'andra pradesh': 'AP',
    5653    'andrapradesh': 'AP',
    5754    'andhrapradesh': 'AP',
    58     'maharastra': 'MH',
    59     'mh': 'MH',
    6055    'ap': 'AP',
    61     'dl': 'DL',
    62     'dd': 'DD',
    63     'br': 'BR',
     56    'andhra pradesh': 'AP',
    6457    'ar': 'AR',
    65     'sk': 'SK',
    66     'kl': 'KL',
     58    'arunachal pradesh': 'AR',
     59    'assam': 'AS',
     60    'as': 'AS',
     61    'bihar': 'BR',
     62    'br': 'BR',
     63    'cg': 'CG',
     64    'chattisgarh': 'CG',
     65    'ch': 'CH',
     66    'chandigarh': 'CH',
     67    'daman and diu': 'DD',
     68    'dd': 'DD',
     69    'dl': 'DL',
     70    'delhi': 'DL',
     71    'dn': 'DN',
     72    'dadra and nagar haveli': 'DN',
    6773    'ga': 'GA',
    68     'rj': 'RJ',
    69     'rajastan': 'RJ',
    70     'rajasthan': 'RJ',
     74    'goa': 'GA',
     75    'gj': 'GJ',
     76    'gujarat': 'GJ',
     77    'himachal pradesh': 'HP',
    7178    'hp': 'HP',
    72     'ua': 'UA',
    73     'up': 'UP',
     79    'hr': 'HR',
     80    'haryana': 'HR',
     81    'jharkhand': 'JH',
     82    'jh': 'JH',
     83    'jammu and kashmir': 'JK',
     84    'jk': 'JK',
     85    'karnataka': 'KA',
     86    'karnatka': 'KA',
     87    'ka': 'KA',
     88    'kerala': 'KL',
     89    'kl': 'KL',
     90    'ld': 'LD',
     91    'lakshadweep': 'LD',
     92    'maharastra': 'MH',
     93    'mh': 'MH',
     94    'maharashtra': 'MH',
     95    'meghalaya': 'ML',
     96    'ml': 'ML',
     97    'mn': 'MN',
     98    'manipur': 'MN',
     99    'madhya pradesh': 'MP',
    74100    'mp': 'MP',
    75     'mz': 'MZ',
    76     'bengal': 'WB',
    77     'westbengal': 'WB',
     101    'mizoram': 'MZ',
    78102    'mizo': 'MZ',
    79     'orisa': 'OR',
     103    'mz': 'MZ',
     104    'nl': 'NL',
     105    'nagaland': 'NL',
     106    'orissa': 'OR',
    80107    'odisa': 'OR',
     108    'orisa': 'OR',
    81109    'or': 'OR',
    82     'ar': 'AR',
     110    'pb': 'PB',
     111    'punjab': 'PB',
     112    'py': 'PY',
     113    'pondicherry': 'PY',
     114    'rajasthan': 'RJ',
     115    'rajastan': 'RJ',
     116    'rj': 'RJ',
     117    'sikkim': 'SK',
     118    'sk': 'SK',
     119    'tamil nadu': 'TN',
     120    'tn': 'TN',
     121    'tamilnadu': 'TN',
     122    'tamilnad': 'TN',
     123    'tr': 'TR',
     124    'tripura': 'TR',
     125    'ua': 'UA',
     126    'uttarakhand': 'UA',
     127    'up': 'UP',
     128    'uttar pradesh': 'UP',
     129    'westbengal': 'WB',
     130    'bengal': 'WB',
     131    'wb': 'WB',
     132    'west bengal': 'WB'
    83133}
    84134
  • new file tests/regressiontests/forms/localflavor/in_.py

    diff --git a/tests/regressiontests/forms/localflavor/in_.py b/tests/regressiontests/forms/localflavor/in_.py
    new file mode 100644
    index 0000000..1755366
    - +  
     1import warnings
     2
     3from django.contrib.localflavor.in_.forms import (INZipCodeField,
     4                                                  INStateField, INStateSelect)
     5
     6from utils import LocalFlavorTestCase
     7
     8
     9class INLocalFlavorTests(LocalFlavorTestCase):
     10    def test_INPStateSelect(self):
     11        f = INStateSelect()
     12        out = u'''<select name="state">
     13<option value="KA">Karnataka</option>
     14<option value="AP" selected="selected">Andhra Pradesh</option>
     15<option value="KL">Kerala</option>
     16<option value="TN">Tamil Nadu</option>
     17<option value="MH">Maharashtra</option>
     18<option value="UP">Uttar Pradesh</option>
     19<option value="GA">Goa</option>
     20<option value="GJ">Gujarat</option>
     21<option value="RJ">Rajasthan</option>
     22<option value="HP">Himachal Pradesh</option>
     23<option value="JK">Jammu and Kashmir</option>
     24<option value="AR">Arunachal Pradesh</option>
     25<option value="AS">Assam</option>
     26<option value="BR">Bihar</option>
     27<option value="CG">Chattisgarh</option>
     28<option value="HR">Haryana</option>
     29<option value="JH">Jharkhand</option>
     30<option value="MP">Madhya Pradesh</option>
     31<option value="MN">Manipur</option>
     32<option value="ML">Meghalaya</option>
     33<option value="MZ">Mizoram</option>
     34<option value="NL">Nagaland</option>
     35<option value="OR">Orissa</option>
     36<option value="PB">Punjab</option>
     37<option value="SK">Sikkim</option>
     38<option value="TR">Tripura</option>
     39<option value="UA">Uttarakhand</option>
     40<option value="WB">West Bengal</option>
     41<option value="AN">Andaman and Nicobar</option>
     42<option value="CH">Chandigarh</option>
     43<option value="DN">Dadra and Nagar Haveli</option>
     44<option value="DD">Daman and Diu</option>
     45<option value="DL">Delhi</option>
     46<option value="LD">Lakshadweep</option>
     47<option value="PY">Pondicherry</option>
     48</select>'''
     49        self.assertEqual(f.render('state', 'AP'), out)
     50
     51    def test_INZipCodeField(self):
     52        error_format = [u'Enter a zip code in the format XXXXXX or XXX XXX.']
     53        valid = {
     54            '360311': '360311',
     55            '360 311': '360311',
     56        }
     57        invalid = {
     58            '36 0311': error_format,
     59            '3603111': error_format,
     60            '360 31': error_format,
     61            '36031': error_format,
     62            'O2B 2R3': error_format
     63        }
     64        self.assertFieldOutput(INZipCodeField, valid, invalid)
     65
     66    def test_INStateField(self):
     67        error_format = [u'Enter an Indian state or territory.']
     68        valid = {
     69            'an': 'AN',
     70            'AN': 'AN',
     71            'andaman and nicobar': 'AN',
     72            'andra pradesh': 'AP',
     73            'andrapradesh': 'AP',
     74            'andhrapradesh': 'AP',
     75            'ap': 'AP',
     76            'andhra pradesh': 'AP',
     77            'ar': 'AR',
     78            'arunachal pradesh': 'AR',
     79            'assam': 'AS',
     80            'as': 'AS',
     81            'bihar': 'BR',
     82            'br': 'BR',
     83            'cg': 'CG',
     84            'chattisgarh': 'CG',
     85            'ch': 'CH',
     86            'chandigarh': 'CH',
     87            'daman and diu': 'DD',
     88            'dd': 'DD',
     89            'dl': 'DL',
     90            'delhi': 'DL',
     91            'dn': 'DN',
     92            'dadra and nagar haveli': 'DN',
     93            'ga': 'GA',
     94            'goa': 'GA',
     95            'gj': 'GJ',
     96            'gujarat': 'GJ',
     97            'himachal pradesh': 'HP',
     98            'hp': 'HP',
     99            'hr': 'HR',
     100            'haryana': 'HR',
     101            'jharkhand': 'JH',
     102            'jh': 'JH',
     103            'jammu and kashmir': 'JK',
     104            'jk': 'JK',
     105            'karnataka': 'KA',
     106            'karnatka': 'KA',
     107            'ka': 'KA',
     108            'kerala': 'KL',
     109            'kl': 'KL',
     110            'ld': 'LD',
     111            'lakshadweep': 'LD',
     112            'maharastra': 'MH',
     113            'mh': 'MH',
     114            'maharashtra': 'MH',
     115            'meghalaya': 'ML',
     116            'ml': 'ML',
     117            'mn': 'MN',
     118            'manipur': 'MN',
     119            'madhya pradesh': 'MP',
     120            'mp': 'MP',
     121            'mizoram': 'MZ',
     122            'mizo': 'MZ',
     123            'mz': 'MZ',
     124            'nl': 'NL',
     125            'nagaland': 'NL',
     126            'orissa': 'OR',
     127            'odisa': 'OR',
     128            'orisa': 'OR',
     129            'or': 'OR',
     130            'pb': 'PB',
     131            'punjab': 'PB',
     132            'py': 'PY',
     133            'pondicherry': 'PY',
     134            'rajasthan': 'RJ',
     135            'rajastan': 'RJ',
     136            'rj': 'RJ',
     137            'sikkim': 'SK',
     138            'sk': 'SK',
     139            'tamil nadu': 'TN',
     140            'tn': 'TN',
     141            'tamilnadu': 'TN',
     142            'tamilnad': 'TN',
     143            'tr': 'TR',
     144            'tripura': 'TR',
     145            'ua': 'UA',
     146            'uttarakhand': 'UA',
     147            'up': 'UP',
     148            'uttar pradesh': 'UP',
     149            'westbengal': 'WB',
     150            'bengal': 'WB',
     151            'wb': 'WB',
     152            'west bengal': 'WB'
     153        }
     154        invalid = {
     155            'florida': error_format,
     156            'FL': error_format,
     157        }
     158        self.assertFieldOutput(INStateField, valid, invalid)
  • tests/regressiontests/forms/localflavortests.py

    diff --git a/tests/regressiontests/forms/localflavortests.py b/tests/regressiontests/forms/localflavortests.py
    index e2d5aa6..52a2042 100644
    a b from localflavor.id import IDLocalFlavorTests  
    2020from localflavor.ie import IELocalFlavorTests
    2121from localflavor.il import ILLocalFlavorTests
    2222from localflavor.is_ import ISLocalFlavorTests
     23from localflavor.in_ import INLocalFlavorTests
    2324from localflavor.it import ITLocalFlavorTests
    2425from localflavor.jp import JPLocalFlavorTests
    2526from localflavor.kw import KWLocalFlavorTests
  • tests/regressiontests/forms/tests/__init__.py

    diff --git a/tests/regressiontests/forms/tests/__init__.py b/tests/regressiontests/forms/tests/__init__.py
    index 39db39f..848e3b5 100644
    a b from regressiontests.forms.localflavortests import (  
    3333    IELocalFlavorTests,
    3434    ILLocalFlavorTests,
    3535    ISLocalFlavorTests,
     36    INLocalFlavorTests,
    3637    ITLocalFlavorTests,
    3738    JPLocalFlavorTests,
    3839    KWLocalFlavorTests,
Back to Top