from django.utils.translation import ugettext as _
from django.db import models

STATES = (
    ('AK', _('Alaska')),
    ('AL', _('Alabama')),
    ('AR', _('Arkansas')),
    ('AZ', _('Arizona')),
    ('CA', _('California')),
    ('CO', _('Colorado')),
    ('CT', _('Connecticut')),
    ('DE', _('Delaware')),
    ('FL', _('Florida')),
    ('GA', _('Georgia')),
    ('HI', _('Hawaii')),
    ('IA', _('Iowa')),
    ('ID', _('Idaho')),
    ('IL', _('Illinois')),
    ('IN', _('Indiana')),
    ('KS', _('Kansas')),
    ('KY', _('Kentucky')),
    ('LA', _('Louisiana')),
    ('MA', _('Massachusetts')),
    ('MD', _('Maryland')),
    ('ME', _('Maine')),
    ('MI', _('Michigan')),
    ('MN', _('Minnesota')),
    ('MO', _('Missouri')),
    ('MS', _('Mississippi')),
    ('MT', _('Montana')),
    ('NC', _('North Carolina')),
    ('ND', _('North Dakota')),
    ('NE', _('Nebraska')),
    ('NH', _('New Hampshire')),
    ('NJ', _('New Jersey')),
    ('NM', _('New Mexico')),
    ('NV', _('Nevada')),
    ('NY', _('New York')),
    ('OH', _('Ohio')),
    ('OK', _('Oklahoma')),
    ('OR', _('Oregon')),
    ('PA', _('Pennsylvania')),
    ('RI', _('Rhode Island')),
    ('SC', _('South Carolina')),
    ('SD', _('South Dakota')),
    ('TN', _('Tennessee')),
    ('TX', _('Texas')),
    ('UT', _('Utah')),
    ('VT', _('Vermont')),
    ('VA', _('Virginia')),
    ('WA', _('Washington')),
    ('WI', _('Wisconsin')),
    ('WV', _('West Virginia')),
    ('WY', _('Wyoming')),
)

class StateField(models.CharField):
    def __init__(self, *args, **kwargs):
        kwargs.setdefault('max_length', 2)
        kwargs.setdefault('choices', STATES)

        super(StateField, self).__init__(*args, **kwargs)

    def get_internal_type(self):
        return "CharField"
