Fixed #3986 -- Added Indian localflavor. Thanks, pradeep.gowda@gmail.com.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@5847 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-08-11 10:04:19 +00:00
parent 9864c9d8bf
commit 9309a8d6c3
4 changed files with 135 additions and 0 deletions

View File

@ -120,6 +120,7 @@ answer newbie questions, and generally made Django that much better:
martin.glueck@gmail.com
GomoX <gomo@datafull.com>
Mario Gonzalez <gonzalemario@gmail.com>
pradeep.gowda@gmail.com
Simon Greenhill <dev@simon.net.nz>
Owen Griffiths
Espen Grindhaug <http://grindhaug.org/>

View File

@ -0,0 +1 @@
# __init__.py

View File

@ -0,0 +1,49 @@
"""
India-specific Form helpers.
"""
from django.newforms import ValidationError
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
from django.utils.encoding import smart_unicode
from django.utils.translation import gettext
import re
class INZipCodeField(RegexField):
def __init__(self, *args, **kwargs):
super(INZipCodeField, self).__init__(r'^\d{6}$',
max_length=None, min_length=None,
error_message=gettext(u'Enter a zip code in the format XXXXXXX.'),
*args, **kwargs)
class INStateField(Field):
"""
A form field that validates its input is a Indian state name or
abbreviation. It normalizes the input to the standard two-letter vehicle
registration abbreviation for the given state or union territory
"""
def clean(self, value):
from in_states import STATES_NORMALIZED
super(INStateField, self).clean(value)
if value in EMPTY_VALUES:
return u''
try:
value = value.strip().lower()
except AttributeError:
pass
else:
try:
return smart_unicode(STATES_NORMALIZED[value.strip().lower()])
except KeyError:
pass
raise ValidationError(u'Enter a Indian state or territory.')
class INStateSelect(Select):
"""
A Select widget that uses a list of Indian states/territories as its
choices.
"""
def __init__(self, attrs=None):
from in_states import STATE_CHOICES
super(INStateSelect, self).__init__(attrs, choices=STATE_CHOICES)

View File

@ -0,0 +1,84 @@
"""
A mapping of state misspellings/abbreviations to normalized abbreviations, and
an alphabetical list of states for use as `choices` in a formfield.
This exists in this standalone file so that it's only imported into memory
when explicitly needed.
"""
STATE_CHOICES = (
'KA', 'Karnataka',
'AP', 'Andhra Pradesh',
'KL', 'Kerala',
'TN', 'Tamil Nadu',
'MH', 'Maharashtra',
'UP', 'Uttar Pradesh',
'GA', 'Goa',
'GJ', 'Gujarat',
'RJ', 'Rajasthan',
'HP', 'Himachal Pradesh',
'JK', 'Jammu and Kashmir',
'AR', 'Arunachal Pradesh',
'AS', 'Assam',
'BR', 'Bihar',
'CG', 'Chattisgarh',
'HR', 'Haryana',
'JH', 'Jharkhand',
'MP', 'Madhya Pradesh',
'MN', 'Manipur',
'ML', 'Meghalaya',
'MZ', 'Mizoram',
'NL', 'Nagaland',
'OR', 'Orissa',
'PB', 'Punjab',
'SK', 'Sikkim',
'TR', 'Tripura',
'UA', 'Uttarakhand',
'WB', 'West Bengal',
#Union Territories
'AN', 'Andaman and Nicobar',
'CH', 'Chandigarh',
'DN', 'Dadra and Nagar Haveli',
'DD', 'Daman and Diu',
'DL', 'Delhi',
'LD', 'Lakshadweep',
'PY', 'Pondicherry',
)
STATES_NORMALIZED = {
'ka': 'KA',
'karnatka': 'KA',
'tn': 'TN',
'tamilnad': 'TN',
'tamilnadu': 'TN',
'andra pradesh': 'AP',
'andrapradesh': 'AP',
'andhrapradesh': 'AP',
'maharastra': 'MH',
'mh': 'MH',
'ap': 'AP',
'dl': 'DL',
'dd': 'DD',
'br': 'BR',
'ar': 'AR',
'sk': 'SK',
'kl': 'KL',
'ga': 'GA',
'rj': 'RJ',
'rajastan': 'RJ',
'rajasthan': 'RJ',
'hp': 'HP',
'ua': 'UA',
'up': 'UP',
'mp': 'MP',
'mz': 'MZ',
'bengal': 'WB',
'westbengal': 'WB',
'mizo': 'MZ',
'orisa': 'OR',
'odisa': 'OR',
'or': 'OR',
'ar': 'AR',
}