Author: adrian
Date: 2007-02-19 18:30:22 -0600 (Mon, 19 Feb 2007)
New Revision: 4545
Modified:
django/trunk/django/contrib/localflavor/usa/forms.py
django/trunk/django/contrib/localflavor/usa/us_states.py
django/trunk/tests/regressiontests/forms/tests.py
Log:
Fixed #2455 -- Added newforms USStateSelect widget in
django.contrib.localflavor.usa
Modified: django/trunk/django/contrib/localflavor/usa/forms.py
===================================================================
--- django/trunk/django/contrib/localflavor/usa/forms.py 2007-02-19
23:54:55 UTC (rev 4544)
+++ django/trunk/django/contrib/localflavor/usa/forms.py 2007-02-20
00:30:22 UTC (rev 4545)
@@ -3,7 +3,7 @@
"""
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 @@
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)
Modified: django/trunk/django/contrib/localflavor/usa/us_states.py
===================================================================
--- django/trunk/django/contrib/localflavor/usa/us_states.py 2007-02-19
23:54:55 UTC (rev 4544)
+++ django/trunk/django/contrib/localflavor/usa/us_states.py 2007-02-20
00:30:22 UTC (rev 4545)
@@ -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',
Modified: django/trunk/tests/regressiontests/forms/tests.py
===================================================================
--- django/trunk/tests/regressiontests/forms/tests.py 2007-02-19 23:54:55 UTC
(rev 4544)
+++ django/trunk/tests/regressiontests/forms/tests.py 2007-02-20 00:30:22 UTC
(rev 4545)
@@ -2222,7 +2222,7 @@
... 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,8 +3349,76 @@
>>> 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
>>> f = UKPostcodeField()
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---