Files
PyRIGS/zope/schema/tests/states.py
2014-12-07 17:32:25 +00:00

131 lines
3.5 KiB
Python

##############################################################################
#
# Copyright (c) 2003 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Sample vocabulary supporting state abbreviations.
"""
from zope.schema._compat import u
from zope.interface import implementer
from zope.schema import interfaces
from zope.schema import Choice
# This table is based on information from the United States Postal Service:
# http://www.usps.com/ncsc/lookups/abbreviations.html#states
_states = {
'AL': u('Alabama'),
'AK': u('Alaska'),
'AS': u('American Samoa'),
'AZ': u('Arizona'),
'AR': u('Arkansas'),
'CA': u('California'),
'CO': u('Colorado'),
'CT': u('Connecticut'),
'DE': u('Delaware'),
'DC': u('District of Columbia'),
'FM': u('Federated States of Micronesia'),
'FL': u('Florida'),
'GA': u('Georgia'),
'GU': u('Guam'),
'HI': u('Hawaii'),
'ID': u('Idaho'),
'IL': u('Illinois'),
'IN': u('Indiana'),
'IA': u('Iowa'),
'KS': u('Kansas'),
'KY': u('Kentucky'),
'LA': u('Louisiana'),
'ME': u('Maine'),
'MH': u('Marshall Islands'),
'MD': u('Maryland'),
'MA': u('Massachusetts'),
'MI': u('Michigan'),
'MN': u('Minnesota'),
'MS': u('Mississippi'),
'MO': u('Missouri'),
'MT': u('Montana'),
'NE': u('Nebraska'),
'NV': u('Nevada'),
'NH': u('New Hampshire'),
'NJ': u('New Jersey'),
'NM': u('New Mexico'),
'NY': u('New York'),
'NC': u('North Carolina'),
'ND': u('North Dakota'),
'MP': u('Northern Mariana Islands'),
'OH': u('Ohio'),
'OK': u('Oklahoma'),
'OR': u('Oregon'),
'PW': u('Palau'),
'PA': u('Pennsylvania'),
'PR': u('Puerto Rico'),
'RI': u('Rhode Island'),
'SC': u('South Carolina'),
'SD': u('South Dakota'),
'TN': u('Tennessee'),
'TX': u('Texas'),
'UT': u('Utah'),
'VT': u('Vermont'),
'VI': u('Virgin Islands'),
'VA': u('Virginia'),
'WA': u('Washington'),
'WV': u('West Virginia'),
'WI': u('Wisconsin'),
'WY': u('Wyoming'),
}
@implementer(interfaces.ITerm)
class State(object):
__slots__ = 'value', 'title'
def __init__(self, value, title):
self.value = value
self.title = title
for v, p in _states.items():
_states[v] = State(v, p)
class IStateVocabulary(interfaces.IVocabulary):
"""Vocabularies that support the states database conform to this."""
@implementer(IStateVocabulary)
class StateVocabulary(object):
__slots__ = ()
def __init__(self, object=None):
pass
def __contains__(self, value):
return value in _states
def __iter__(self):
return iter(_states.values())
def __len__(self):
return len(_states)
def getTerm(self, value):
return _states[value]
class StateSelectionField(Choice):
vocabulary = StateVocabulary()
def __init__(self, **kw):
super(StateSelectionField, self).__init__(
vocabulary=StateSelectionField.vocabulary,
**kw)
self.vocabularyName = "states"