Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

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
  • Loading branch information...
commit 9309a8d6c3d11133270a891e799b3990e4fa5152 1 parent 9864c9d
@malcolmt malcolmt authored
View
1  AUTHORS
@@ -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
1  django/contrib/in_/__init__.py
@@ -0,0 +1 @@
+# __init__.py
View
49 django/contrib/in_/forms.py
@@ -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
84 django/contrib/in_/in_states.py
@@ -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',
+
+ }
+
Please sign in to comment.
Something went wrong with that request. Please try again.