Fixed #2455 -- Added newforms USStateSelect widget in django.contrib.localflavor.usa
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4545 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
b8fa80bd00
commit
907241e299
|
@ -3,7 +3,7 @@ USA-specific Form helpers
|
|||
"""
|
||||
|
||||
from django.newforms import ValidationError
|
||||
from django.newforms.fields import Field, RegexField, EMPTY_VALUES
|
||||
from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
|
||||
from django.utils.translation import gettext
|
||||
|
||||
class USZipCodeField(RegexField):
|
||||
|
@ -34,3 +34,11 @@ class USStateField(Field):
|
|||
except KeyError:
|
||||
pass
|
||||
raise ValidationError(u'Enter a U.S. state or territory.')
|
||||
|
||||
class USStateSelect(Select):
|
||||
"""
|
||||
A Select widget that uses a list of U.S. states/territories as its choices.
|
||||
"""
|
||||
def __init__(self, attrs=None):
|
||||
from us_states import STATE_CHOICES # relative import
|
||||
super(USStateSelect, self).__init__(attrs, choices=STATE_CHOICES)
|
||||
|
|
|
@ -1,10 +1,72 @@
|
|||
"""
|
||||
A mapping of state misspellings/abbreviations to normalized abbreviations.
|
||||
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 = (
|
||||
('AL', 'Alabama'),
|
||||
('AK', 'Alaska'),
|
||||
('AS', 'American Samoa'),
|
||||
('AZ', 'Arizona'),
|
||||
('AR', 'Arkansas'),
|
||||
('CA', 'California'),
|
||||
('CO', 'Colorado'),
|
||||
('CT', 'Connecticut'),
|
||||
('DE', 'Deleware'),
|
||||
('DC', 'District of Columbia'),
|
||||
('FM', 'Federated States of Micronesia'),
|
||||
('FL', 'Florida'),
|
||||
('GA', 'Georgia'),
|
||||
('GU', 'Guam'),
|
||||
('HI', 'Hawaii'),
|
||||
('ID', 'Idaho'),
|
||||
('IL', 'Illinois'),
|
||||
('IN', 'Indiana'),
|
||||
('IA', 'Iowa'),
|
||||
('KS', 'Kansas'),
|
||||
('KY', 'Kentucky'),
|
||||
('LA', 'Louisiana'),
|
||||
('ME', 'Maine'),
|
||||
('MH', 'Marshall Islands'),
|
||||
('MD', 'Maryland'),
|
||||
('MI', 'Michigan'),
|
||||
('MN', 'Minnesota'),
|
||||
('MS', 'Mississippi'),
|
||||
('MO', 'Missouri'),
|
||||
('MT', 'Montana'),
|
||||
('NE', 'Nebraska'),
|
||||
('NV', 'Nevada'),
|
||||
('NH', 'New Hampshire'),
|
||||
('NJ', 'New Jersey'),
|
||||
('NM', 'New Mexico'),
|
||||
('NY', 'New York'),
|
||||
('NC', 'North Carolina'),
|
||||
('ND', 'North Dakota'),
|
||||
('MP', 'Northern Mariana Islands'),
|
||||
('OH', 'Ohio'),
|
||||
('OK', 'Oklahoma'),
|
||||
('OR', 'Oregon'),
|
||||
('PW', 'Palau'),
|
||||
('PA', 'Pennsylvania'),
|
||||
('PR', 'Puerto Rico'),
|
||||
('RI', 'Rhode Island'),
|
||||
('SC', 'South Carolina'),
|
||||
('SD', 'South Dakota'),
|
||||
('TN', 'Tennessee'),
|
||||
('TX', 'Texas'),
|
||||
('UT', 'Utah'),
|
||||
('VT', 'Vermont'),
|
||||
('VI', 'Virgin Islands'),
|
||||
('VA', 'Virginia'),
|
||||
('WA', 'Washington'),
|
||||
('WV', 'West Virginia'),
|
||||
('WI', 'Wisconsin'),
|
||||
('WY', 'Wyoming'),
|
||||
)
|
||||
|
||||
STATES_NORMALIZED = {
|
||||
'ak': 'AK',
|
||||
'al': 'AL',
|
||||
|
|
|
@ -2222,7 +2222,7 @@ Validation errors are HTML-escaped when output as HTML.
|
|||
... special_name = CharField()
|
||||
... def clean_special_name(self):
|
||||
... raise ValidationError("Something's wrong with '%s'" % self.clean_data['special_name'])
|
||||
|
||||
|
||||
>>> f = EscapingForm({'special_name': "Nothing to escape"}, auto_id=False)
|
||||
>>> print f
|
||||
<tr><th>Special name:</th><td><ul class="errorlist"><li>Something's wrong with 'Nothing to escape'</li></ul><input type="text" name="special_name" value="Nothing to escape" /></td></tr>
|
||||
|
@ -3349,7 +3349,75 @@ u''
|
|||
>>> f.clean('')
|
||||
u''
|
||||
|
||||
# UKPostcodeField ##############################################################
|
||||
# USStateSelect ###############################################################
|
||||
|
||||
USStateSelect is a Select widget that uses a list of U.S. states/territories
|
||||
as its choices.
|
||||
>>> from django.contrib.localflavor.usa.forms import USStateSelect
|
||||
>>> w = USStateSelect()
|
||||
>>> print w.render('state', 'IL')
|
||||
<select name="state">
|
||||
<option value="AL">Alabama</option>
|
||||
<option value="AK">Alaska</option>
|
||||
<option value="AS">American Samoa</option>
|
||||
<option value="AZ">Arizona</option>
|
||||
<option value="AR">Arkansas</option>
|
||||
<option value="CA">California</option>
|
||||
<option value="CO">Colorado</option>
|
||||
<option value="CT">Connecticut</option>
|
||||
<option value="DE">Deleware</option>
|
||||
<option value="DC">District of Columbia</option>
|
||||
<option value="FM">Federated States of Micronesia</option>
|
||||
<option value="FL">Florida</option>
|
||||
<option value="GA">Georgia</option>
|
||||
<option value="GU">Guam</option>
|
||||
<option value="HI">Hawaii</option>
|
||||
<option value="ID">Idaho</option>
|
||||
<option value="IL" selected="selected">Illinois</option>
|
||||
<option value="IN">Indiana</option>
|
||||
<option value="IA">Iowa</option>
|
||||
<option value="KS">Kansas</option>
|
||||
<option value="KY">Kentucky</option>
|
||||
<option value="LA">Louisiana</option>
|
||||
<option value="ME">Maine</option>
|
||||
<option value="MH">Marshall Islands</option>
|
||||
<option value="MD">Maryland</option>
|
||||
<option value="MI">Michigan</option>
|
||||
<option value="MN">Minnesota</option>
|
||||
<option value="MS">Mississippi</option>
|
||||
<option value="MO">Missouri</option>
|
||||
<option value="MT">Montana</option>
|
||||
<option value="NE">Nebraska</option>
|
||||
<option value="NV">Nevada</option>
|
||||
<option value="NH">New Hampshire</option>
|
||||
<option value="NJ">New Jersey</option>
|
||||
<option value="NM">New Mexico</option>
|
||||
<option value="NY">New York</option>
|
||||
<option value="NC">North Carolina</option>
|
||||
<option value="ND">North Dakota</option>
|
||||
<option value="MP">Northern Mariana Islands</option>
|
||||
<option value="OH">Ohio</option>
|
||||
<option value="OK">Oklahoma</option>
|
||||
<option value="OR">Oregon</option>
|
||||
<option value="PW">Palau</option>
|
||||
<option value="PA">Pennsylvania</option>
|
||||
<option value="PR">Puerto Rico</option>
|
||||
<option value="RI">Rhode Island</option>
|
||||
<option value="SC">South Carolina</option>
|
||||
<option value="SD">South Dakota</option>
|
||||
<option value="TN">Tennessee</option>
|
||||
<option value="TX">Texas</option>
|
||||
<option value="UT">Utah</option>
|
||||
<option value="VT">Vermont</option>
|
||||
<option value="VI">Virgin Islands</option>
|
||||
<option value="VA">Virginia</option>
|
||||
<option value="WA">Washington</option>
|
||||
<option value="WV">West Virginia</option>
|
||||
<option value="WI">Wisconsin</option>
|
||||
<option value="WY">Wyoming</option>
|
||||
</select>
|
||||
|
||||
# UKPostcodeField #############################################################
|
||||
|
||||
UKPostcodeField validates that the data is a valid UK postcode.
|
||||
>>> from django.contrib.localflavor.uk.forms import UKPostcodeField
|
||||
|
|
Loading…
Reference in New Issue