843 lines
46 KiB
Python
843 lines
46 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Tests for the different contrib/localflavor/ form fields.
|
||
|
|
||
|
localflavor_tests = r"""
|
||
|
# USZipCodeField ##############################################################
|
||
|
|
||
|
USZipCodeField validates that the data is either a five-digit U.S. zip code or
|
||
|
a zip+4.
|
||
|
>>> from django.contrib.localflavor.usa.forms import USZipCodeField
|
||
|
>>> f = USZipCodeField()
|
||
|
>>> f.clean('60606')
|
||
|
u'60606'
|
||
|
>>> f.clean(60606)
|
||
|
u'60606'
|
||
|
>>> f.clean('04000')
|
||
|
u'04000'
|
||
|
>>> f.clean('4000')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean('60606-1234')
|
||
|
u'60606-1234'
|
||
|
>>> f.clean('6060-1234')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean('60606-')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = USZipCodeField(required=False)
|
||
|
>>> f.clean('60606')
|
||
|
u'60606'
|
||
|
>>> f.clean(60606)
|
||
|
u'60606'
|
||
|
>>> f.clean('04000')
|
||
|
u'04000'
|
||
|
>>> f.clean('4000')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean('60606-1234')
|
||
|
u'60606-1234'
|
||
|
>>> f.clean('6060-1234')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean('60606-')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# USPhoneNumberField ##########################################################
|
||
|
|
||
|
USPhoneNumberField validates that the data is a valid U.S. phone number,
|
||
|
including the area code. It's normalized to XXX-XXX-XXXX format.
|
||
|
>>> from django.contrib.localflavor.usa.forms import USPhoneNumberField
|
||
|
>>> f = USPhoneNumberField()
|
||
|
>>> f.clean('312-555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('3125551212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312 555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('(312) 555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312 555 1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312.555.1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312.555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean(' (312) 555.1212 ')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('555-1212')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
|
||
|
>>> f.clean('312-55-1212')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = USPhoneNumberField(required=False)
|
||
|
>>> f.clean('312-555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('3125551212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312 555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('(312) 555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312 555 1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312.555.1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('312.555-1212')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean(' (312) 555.1212 ')
|
||
|
u'312-555-1212'
|
||
|
>>> f.clean('555-1212')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
|
||
|
>>> f.clean('312-55-1212')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in XXX-XXX-XXXX format.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# USStateField ################################################################
|
||
|
|
||
|
USStateField validates that the data is either an abbreviation or name of a
|
||
|
U.S. state.
|
||
|
>>> from django.contrib.localflavor.usa.forms import USStateField
|
||
|
>>> f = USStateField()
|
||
|
>>> f.clean('il')
|
||
|
u'IL'
|
||
|
>>> f.clean('IL')
|
||
|
u'IL'
|
||
|
>>> f.clean('illinois')
|
||
|
u'IL'
|
||
|
>>> f.clean(' illinois ')
|
||
|
u'IL'
|
||
|
>>> f.clean(60606)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a U.S. state or territory.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = USStateField(required=False)
|
||
|
>>> f.clean('il')
|
||
|
u'IL'
|
||
|
>>> f.clean('IL')
|
||
|
u'IL'
|
||
|
>>> f.clean('illinois')
|
||
|
u'IL'
|
||
|
>>> f.clean(' illinois ')
|
||
|
u'IL'
|
||
|
>>> f.clean(60606)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a U.S. state or territory.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# 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="MA">Massachusetts</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()
|
||
|
>>> f.clean('BT32 4PX')
|
||
|
u'BT32 4PX'
|
||
|
>>> f.clean('GIR 0AA')
|
||
|
u'GIR 0AA'
|
||
|
>>> f.clean('BT324PX')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
|
||
|
>>> f.clean('1NV 4L1D')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = UKPostcodeField(required=False)
|
||
|
>>> f.clean('BT32 4PX')
|
||
|
u'BT32 4PX'
|
||
|
>>> f.clean('GIR 0AA')
|
||
|
u'GIR 0AA'
|
||
|
>>> f.clean('1NV 4L1D')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
|
||
|
>>> f.clean('BT324PX')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postcode. A space is required between the two postcode parts.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# FRZipCodeField #############################################################
|
||
|
|
||
|
FRZipCodeField validates that the data is a valid FR zipcode.
|
||
|
>>> from django.contrib.localflavor.fr.forms import FRZipCodeField
|
||
|
>>> f = FRZipCodeField()
|
||
|
>>> f.clean('75001')
|
||
|
u'75001'
|
||
|
>>> f.clean('93200')
|
||
|
u'93200'
|
||
|
>>> f.clean('2A200')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean('980001')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = FRZipCodeField(required=False)
|
||
|
>>> f.clean('75001')
|
||
|
u'75001'
|
||
|
>>> f.clean('93200')
|
||
|
u'93200'
|
||
|
>>> f.clean('2A200')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean('980001')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
|
||
|
# FRPhoneNumberField ##########################################################
|
||
|
|
||
|
FRPhoneNumberField validates that the data is a valid french phone number.
|
||
|
It's normalized to 0X XX XX XX XX format. Dots are valid too.
|
||
|
>>> from django.contrib.localflavor.fr.forms import FRPhoneNumberField
|
||
|
>>> f = FRPhoneNumberField()
|
||
|
>>> f.clean('01 55 44 58 64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('0155445864')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01 5544 5864')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01 55.44.58.64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01.55.44.58.64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01,55,44,58,64')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
|
||
|
>>> f.clean('555 015 544')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = FRPhoneNumberField(required=False)
|
||
|
>>> f.clean('01 55 44 58 64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('0155445864')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01 5544 5864')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01 55.44.58.64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01.55.44.58.64')
|
||
|
u'01 55 44 58 64'
|
||
|
>>> f.clean('01,55,44,58,64')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
|
||
|
>>> f.clean('555 015 544')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# FRDepartmentSelect ###############################################################
|
||
|
|
||
|
FRDepartmentSelect is a Select widget that uses a list of french departments
|
||
|
including DOM TOM
|
||
|
>>> from django.contrib.localflavor.fr.forms import FRDepartmentSelect
|
||
|
>>> w = FRDepartmentSelect()
|
||
|
>>> print w.render('dep', 'Paris')
|
||
|
<select name="dep">
|
||
|
<option value="01">01 - Ain</option>
|
||
|
<option value="02">02 - Aisne</option>
|
||
|
<option value="03">03 - Allier</option>
|
||
|
<option value="04">04 - Alpes-de-Haute-Provence</option>
|
||
|
<option value="05">05 - Hautes-Alpes</option>
|
||
|
<option value="06">06 - Alpes-Maritimes</option>
|
||
|
<option value="07">07 - Ardeche</option>
|
||
|
<option value="08">08 - Ardennes</option>
|
||
|
<option value="09">09 - Ariege</option>
|
||
|
<option value="10">10 - Aube</option>
|
||
|
<option value="11">11 - Aude</option>
|
||
|
<option value="12">12 - Aveyron</option>
|
||
|
<option value="13">13 - Bouches-du-Rhone</option>
|
||
|
<option value="14">14 - Calvados</option>
|
||
|
<option value="15">15 - Cantal</option>
|
||
|
<option value="16">16 - Charente</option>
|
||
|
<option value="17">17 - Charente-Maritime</option>
|
||
|
<option value="18">18 - Cher</option>
|
||
|
<option value="19">19 - Correze</option>
|
||
|
<option value="21">21 - Cote-d'Or</option>
|
||
|
<option value="22">22 - Cotes-d'Armor</option>
|
||
|
<option value="23">23 - Creuse</option>
|
||
|
<option value="24">24 - Dordogne</option>
|
||
|
<option value="25">25 - Doubs</option>
|
||
|
<option value="26">26 - Drome</option>
|
||
|
<option value="27">27 - Eure</option>
|
||
|
<option value="28">28 - Eure-et-Loire</option>
|
||
|
<option value="29">29 - Finistere</option>
|
||
|
<option value="2A">2A - Corse-du-Sud</option>
|
||
|
<option value="2B">2B - Haute-Corse</option>
|
||
|
<option value="30">30 - Gard</option>
|
||
|
<option value="31">31 - Haute-Garonne</option>
|
||
|
<option value="32">32 - Gers</option>
|
||
|
<option value="33">33 - Gironde</option>
|
||
|
<option value="34">34 - Herault</option>
|
||
|
<option value="35">35 - Ille-et-Vilaine</option>
|
||
|
<option value="36">36 - Indre</option>
|
||
|
<option value="37">37 - Indre-et-Loire</option>
|
||
|
<option value="38">38 - Isere</option>
|
||
|
<option value="39">39 - Jura</option>
|
||
|
<option value="40">40 - Landes</option>
|
||
|
<option value="41">41 - Loir-et-Cher</option>
|
||
|
<option value="42">42 - Loire</option>
|
||
|
<option value="43">43 - Haute-Loire</option>
|
||
|
<option value="44">44 - Loire-Atlantique</option>
|
||
|
<option value="45">45 - Loiret</option>
|
||
|
<option value="46">46 - Lot</option>
|
||
|
<option value="47">47 - Lot-et-Garonne</option>
|
||
|
<option value="48">48 - Lozere</option>
|
||
|
<option value="49">49 - Maine-et-Loire</option>
|
||
|
<option value="50">50 - Manche</option>
|
||
|
<option value="51">51 - Marne</option>
|
||
|
<option value="52">52 - Haute-Marne</option>
|
||
|
<option value="53">53 - Mayenne</option>
|
||
|
<option value="54">54 - Meurthe-et-Moselle</option>
|
||
|
<option value="55">55 - Meuse</option>
|
||
|
<option value="56">56 - Morbihan</option>
|
||
|
<option value="57">57 - Moselle</option>
|
||
|
<option value="58">58 - Nievre</option>
|
||
|
<option value="59">59 - Nord</option>
|
||
|
<option value="60">60 - Oise</option>
|
||
|
<option value="61">61 - Orne</option>
|
||
|
<option value="62">62 - Pas-de-Calais</option>
|
||
|
<option value="63">63 - Puy-de-Dome</option>
|
||
|
<option value="64">64 - Pyrenees-Atlantiques</option>
|
||
|
<option value="65">65 - Hautes-Pyrenees</option>
|
||
|
<option value="66">66 - Pyrenees-Orientales</option>
|
||
|
<option value="67">67 - Bas-Rhin</option>
|
||
|
<option value="68">68 - Haut-Rhin</option>
|
||
|
<option value="69">69 - Rhone</option>
|
||
|
<option value="70">70 - Haute-Saone</option>
|
||
|
<option value="71">71 - Saone-et-Loire</option>
|
||
|
<option value="72">72 - Sarthe</option>
|
||
|
<option value="73">73 - Savoie</option>
|
||
|
<option value="74">74 - Haute-Savoie</option>
|
||
|
<option value="75">75 - Paris</option>
|
||
|
<option value="76">76 - Seine-Maritime</option>
|
||
|
<option value="77">77 - Seine-et-Marne</option>
|
||
|
<option value="78">78 - Yvelines</option>
|
||
|
<option value="79">79 - Deux-Sevres</option>
|
||
|
<option value="80">80 - Somme</option>
|
||
|
<option value="81">81 - Tarn</option>
|
||
|
<option value="82">82 - Tarn-et-Garonne</option>
|
||
|
<option value="83">83 - Var</option>
|
||
|
<option value="84">84 - Vaucluse</option>
|
||
|
<option value="85">85 - Vendee</option>
|
||
|
<option value="86">86 - Vienne</option>
|
||
|
<option value="87">87 - Haute-Vienne</option>
|
||
|
<option value="88">88 - Vosges</option>
|
||
|
<option value="89">89 - Yonne</option>
|
||
|
<option value="90">90 - Territoire de Belfort</option>
|
||
|
<option value="91">91 - Essonne</option>
|
||
|
<option value="92">92 - Hauts-de-Seine</option>
|
||
|
<option value="93">93 - Seine-Saint-Denis</option>
|
||
|
<option value="94">94 - Val-de-Marne</option>
|
||
|
<option value="95">95 - Val-d'Oise</option>
|
||
|
<option value="2A">2A - Corse du sud</option>
|
||
|
<option value="2B">2B - Haute Corse</option>
|
||
|
<option value="971">971 - Guadeloupe</option>
|
||
|
<option value="972">972 - Martinique</option>
|
||
|
<option value="973">973 - Guyane</option>
|
||
|
<option value="974">974 - La Reunion</option>
|
||
|
<option value="975">975 - Saint-Pierre-et-Miquelon</option>
|
||
|
<option value="976">976 - Mayotte</option>
|
||
|
<option value="984">984 - Terres Australes et Antarctiques</option>
|
||
|
<option value="986">986 - Wallis et Futuna</option>
|
||
|
<option value="987">987 - Polynesie Francaise</option>
|
||
|
<option value="988">988 - Nouvelle-Caledonie</option>
|
||
|
</select>
|
||
|
|
||
|
# JPPostalCodeField ###############################################################
|
||
|
|
||
|
A form field that validates its input is a Japanese postcode.
|
||
|
|
||
|
Accepts 7 digits(with/out hyphen).
|
||
|
>>> from django.contrib.localflavor.jp.forms import JPPostalCodeField
|
||
|
>>> f = JPPostalCodeField()
|
||
|
>>> f.clean('251-0032')
|
||
|
u'2510032'
|
||
|
>>> f.clean('2510032')
|
||
|
u'2510032'
|
||
|
>>> f.clean('2510-032')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
|
||
|
>>> f.clean('251a0032')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
|
||
|
>>> f.clean('a51-0032')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
|
||
|
>>> f.clean('25100321')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = JPPostalCodeField(required=False)
|
||
|
>>> f.clean('251-0032')
|
||
|
u'2510032'
|
||
|
>>> f.clean('2510032')
|
||
|
u'2510032'
|
||
|
>>> f.clean('2510-032')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
|
||
|
# JPPrefectureSelect ###############################################################
|
||
|
|
||
|
A Select widget that uses a list of Japanese prefectures as its choices.
|
||
|
>>> from django.contrib.localflavor.jp.forms import JPPrefectureSelect
|
||
|
>>> w = JPPrefectureSelect()
|
||
|
>>> print w.render('prefecture', 'kanagawa')
|
||
|
<select name="prefecture">
|
||
|
<option value="hokkaido">Hokkaido</option>
|
||
|
<option value="aomori">Aomori</option>
|
||
|
<option value="iwate">Iwate</option>
|
||
|
<option value="miyagi">Miyagi</option>
|
||
|
<option value="akita">Akita</option>
|
||
|
<option value="yamagata">Yamagata</option>
|
||
|
<option value="fukushima">Fukushima</option>
|
||
|
<option value="ibaraki">Ibaraki</option>
|
||
|
<option value="tochigi">Tochigi</option>
|
||
|
<option value="gunma">Gunma</option>
|
||
|
<option value="saitama">Saitama</option>
|
||
|
<option value="chiba">Chiba</option>
|
||
|
<option value="tokyo">Tokyo</option>
|
||
|
<option value="kanagawa" selected="selected">Kanagawa</option>
|
||
|
<option value="yamanashi">Yamanashi</option>
|
||
|
<option value="nagano">Nagano</option>
|
||
|
<option value="niigata">Niigata</option>
|
||
|
<option value="toyama">Toyama</option>
|
||
|
<option value="ishikawa">Ishikawa</option>
|
||
|
<option value="fukui">Fukui</option>
|
||
|
<option value="gifu">Gifu</option>
|
||
|
<option value="shizuoka">Shizuoka</option>
|
||
|
<option value="aichi">Aichi</option>
|
||
|
<option value="mie">Mie</option>
|
||
|
<option value="shiga">Shiga</option>
|
||
|
<option value="kyoto">Kyoto</option>
|
||
|
<option value="osaka">Osaka</option>
|
||
|
<option value="hyogo">Hyogo</option>
|
||
|
<option value="nara">Nara</option>
|
||
|
<option value="wakayama">Wakayama</option>
|
||
|
<option value="tottori">Tottori</option>
|
||
|
<option value="shimane">Shimane</option>
|
||
|
<option value="okayama">Okayama</option>
|
||
|
<option value="hiroshima">Hiroshima</option>
|
||
|
<option value="yamaguchi">Yamaguchi</option>
|
||
|
<option value="tokushima">Tokushima</option>
|
||
|
<option value="kagawa">Kagawa</option>
|
||
|
<option value="ehime">Ehime</option>
|
||
|
<option value="kochi">Kochi</option>
|
||
|
<option value="fukuoka">Fukuoka</option>
|
||
|
<option value="saga">Saga</option>
|
||
|
<option value="nagasaki">Nagasaki</option>
|
||
|
<option value="kumamoto">Kumamoto</option>
|
||
|
<option value="oita">Oita</option>
|
||
|
<option value="miyazaki">Miyazaki</option>
|
||
|
<option value="kagoshima">Kagoshima</option>
|
||
|
<option value="okinawa">Okinawa</option>
|
||
|
</select>
|
||
|
|
||
|
# ITZipCodeField #############################################################
|
||
|
|
||
|
>>> from django.contrib.localflavor.it.forms import ITZipCodeField
|
||
|
>>> f = ITZipCodeField()
|
||
|
>>> f.clean('00100')
|
||
|
u'00100'
|
||
|
>>> f.clean(' 00100')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
|
||
|
# ITRegionSelect #############################################################
|
||
|
|
||
|
>>> from django.contrib.localflavor.it.forms import ITRegionSelect
|
||
|
>>> w = ITRegionSelect()
|
||
|
>>> w.render('regions', 'PMN')
|
||
|
u'<select name="regions">\n<option value="ABR">Abruzzo</option>\n<option value="BAS">Basilicata</option>\n<option value="CAL">Calabria</option>\n<option value="CAM">Campania</option>\n<option value="EMR">Emilia-Romagna</option>\n<option value="FVG">Friuli-Venezia Giulia</option>\n<option value="LAZ">Lazio</option>\n<option value="LIG">Liguria</option>\n<option value="LOM">Lombardia</option>\n<option value="MAR">Marche</option>\n<option value="MOL">Molise</option>\n<option value="PMN" selected="selected">Piemonte</option>\n<option value="PUG">Puglia</option>\n<option value="SAR">Sardegna</option>\n<option value="SIC">Sicilia</option>\n<option value="TOS">Toscana</option>\n<option value="TAA">Trentino-Alto Adige</option>\n<option value="UMB">Umbria</option>\n<option value="VAO">Valle d\u2019Aosta</option>\n<option value="VEN">Veneto</option>\n</select>'
|
||
|
|
||
|
# FIZipCodeField #############################################################
|
||
|
|
||
|
FIZipCodeField validates that the data is a valid FI zipcode.
|
||
|
>>> from django.contrib.localflavor.fi.forms import FIZipCodeField
|
||
|
>>> f = FIZipCodeField()
|
||
|
>>> f.clean('20540')
|
||
|
u'20540'
|
||
|
>>> f.clean('20101')
|
||
|
u'20101'
|
||
|
>>> f.clean('20s40')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean('205401')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = FIZipCodeField(required=False)
|
||
|
>>> f.clean('20540')
|
||
|
u'20540'
|
||
|
>>> f.clean('20101')
|
||
|
u'20101'
|
||
|
>>> f.clean('20s40')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean('205401')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a zip code in the format XXXXX.']
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# FIMunicipalitySelect ###############################################################
|
||
|
|
||
|
A Select widget that uses a list of Finnish municipalities as its choices.
|
||
|
>>> from django.contrib.localflavor.fi.forms import FIMunicipalitySelect
|
||
|
>>> w = FIMunicipalitySelect()
|
||
|
>>> unicode(w.render('municipalities', 'turku'))
|
||
|
u'<select name="municipalities">\n<option value="akaa">Akaa</option>\n<option value="alaharma">Alah\xe4rm\xe4</option>\n<option value="alajarvi">Alaj\xe4rvi</option>\n<option value="alastaro">Alastaro</option>\n<option value="alavieska">Alavieska</option>\n<option value="alavus">Alavus</option>\n<option value="anjalankoski">Anjalankoski</option>\n<option value="artjarvi">Artj\xe4rvi</option>\n<option value="asikkala">Asikkala</option>\n<option value="askainen">Askainen</option>\n<option value="askola">Askola</option>\n<option value="aura">Aura</option>\n<option value="brando">Br\xe4nd\xf6</option>\n<option value="dragsfjard">Dragsfj\xe4rd</option>\n<option value="eckero">Ecker\xf6</option>\n<option value="elimaki">Elim\xe4ki</option>\n<option value="eno">Eno</option>\n<option value="enonkoski">Enonkoski</option>\n<option value="enontekio">Enonteki\xf6</option>\n<option value="espoo">Espoo</option>\n<option value="eura">Eura</option>\n<option value="eurajoki">Eurajoki</option>\n<option value="evijarvi">Evij\xe4rvi</option>\n<option value="finstrom">Finstr\xf6m</option>\n<option value="forssa">Forssa</option>\n<option value="foglo">F\xf6gl\xf6</option>\n<option value="geta">Geta</option>\n<option value="haapajarvi">Haapaj\xe4rvi</option>\n<option value="haapavesi">Haapavesi</option>\n<option value="hailuoto">Hailuoto</option>\n<option value="halikko">Halikko</option>\n<option value="halsua">Halsua</option>\n<option value="hamina">Hamina</option>\n<option value="hammarland">Hammarland</option>\n<option value="hankasalmi">Hankasalmi</option>\n<option value="hanko">Hanko</option>\n<option value="harjavalta">Harjavalta</option>\n<option value="hartola">Hartola</option>\n<option value="hattula">Hattula</option>\n<option value="hauho">Hauho</option>\n<option value="haukipudas">Haukipudas</option>\n<option value="hausjarvi">Hausj\xe4rvi</option>\n<option value="heinola">Heinola</option>\n<option value="heinavesi">Hein\xe4vesi</option>\n<option value="helsinki">Helsinki</option>\n<option value="himanka">Himanka</option>\n<option value="hirvensalmi">Hirvensalmi</option>\n<option value="hollola">Hollola</option>\n<option value="honkajoki">Honkajoki</option>\n<option value="houtskari">Houtskari</option>\n<option value="huittinen">Huittinen</option>\n<option value="humppila">Humppila</option>\n<option value="hyrynsalmi">Hyrynsalmi</option>\n<option value="hyvinkaa">Hyvink\xe4\xe4</option>\n<option value="hameenkoski">H\xe4meenkoski</option>\n<option value="hameenkyro">H\xe4meenkyr\xf6</option>\n<option value="hameenlinna">H\xe4meenlinna</option>\n<option value="ii">Ii</option>\n<option value="iisalmi">Iisalmi</option>\n<option value="iitti">Iitti</option>\n<option value="ikaalinen">Ikaalinen</option>\n<option value="ilmajoki">Ilmajoki</option>\n<option value="ilomantsi">Ilomantsi</option>\n<option value="imatra">Imatra</option>\n<option value="inari">Inari</option>\n<option value="inio">Ini\xf6</option>\n<option value="inkoo">Inkoo</option>\n<option value="isojoki">Isojoki</option>\n<option value="isokyro">Isokyr\xf6</option>\n<option value="jaala">Jaala</option>\n<option value="jalasjarvi">Jalasj\xe4rvi</option>\n<option value="janakkala">Janakkala</option>\n<option value="joensuu">Joensuu</option>\n<option value="jokioinen">Jokioinen</option>\n<option value="jomala">Jomala</option>\n<option value="joroinen">Joroinen</option>\n<option value="joutsa">Joutsa</option>\n<option value="joutseno">Joutseno</option>\n<option value="juankoski">Juankoski</option>\n<option value="jurva">Jurva</option>\n<option value="juuka">Juuka</option>\n<option value="juupajoki">Juupajoki</option>\n<option value="juva">Juva</option>\n<option value="jyvaskyla">Jyv\xe4skyl\xe4</option>\n<option value="jyvaskylan_mlk">Jyv\xe4skyl\xe4n maalaiskunta</option>\n<option value="jamijarvi">J\xe4mij\xe4rvi</option>\n<option value="jamsa">J\xe4ms\xe4</option>\n<option value="jamsankoski">J\xe4ms\xe4nkoski</option>\n<option value="jarvenpaa">J\xe4rvenp\xe4\xe4</option>\n<option value="kaarina">Kaarina</option>\n<option value="kaavi">Kaavi</option>\n<option value="kajaan
|
||
|
|
||
|
# FISocialSecurityNumber
|
||
|
##############################################################
|
||
|
|
||
|
>>> from django.contrib.localflavor.fi.forms import FISocialSecurityNumber
|
||
|
>>> f = FISocialSecurityNumber()
|
||
|
>>> f.clean('010101-0101')
|
||
|
u'010101-0101'
|
||
|
>>> f.clean('010101+0101')
|
||
|
u'010101+0101'
|
||
|
>>> f.clean('010101A0101')
|
||
|
u'010101A0101'
|
||
|
>>> f.clean('101010-0102')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a valid Finnish social security number.']
|
||
|
>>> f.clean('10a010-0101')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a valid Finnish social security number.']
|
||
|
>>> f.clean('101010-0\xe401')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a valid Finnish social security number.']
|
||
|
>>> f.clean('101010b0101')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Enter a valid Finnish social security number.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f = FISocialSecurityNumber(required=False)
|
||
|
>>> f.clean('010101-0101')
|
||
|
u'010101-0101'
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
|
||
|
# BRZipCodeField ############################################################
|
||
|
>>> from django.contrib.localflavor.br.forms import BRZipCodeField
|
||
|
>>> f = BRZipCodeField()
|
||
|
>>> f.clean('12345-123')
|
||
|
u'12345-123'
|
||
|
>>> f.clean('12345_123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('1234-123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('abcde-abc')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('12345-')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('-123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = BRZipCodeField(required=False)
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
>>> f.clean('-123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('12345-')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('abcde-abc')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('1234-123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('12345_123')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'Informe um c\xf3digo postal no formato XXXXX-XXX.']
|
||
|
>>> f.clean('12345-123')
|
||
|
u'12345-123'
|
||
|
|
||
|
# BRPhoneNumberField #########################################################
|
||
|
|
||
|
>>> from django.contrib.localflavor.br.forms import BRPhoneNumberField
|
||
|
>>> f = BRPhoneNumberField()
|
||
|
>>> f.clean('41-3562-3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('4135623464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41 3562-3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41 3562 3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('(41) 3562 3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41.3562.3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41.3562-3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean(' (41) 3562.3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean(None)
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
>>> f.clean('')
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ValidationError: [u'This field is required.']
|
||
|
|
||
|
>>> f = BRPhoneNumberField(required=False)
|
||
|
>>> f.clean('')
|
||
|
u''
|
||
|
>>> f.clean(None)
|
||
|
u''
|
||
|
>>> f.clean(' (41) 3562.3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41.3562-3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('(41) 3562 3464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('4135623464')
|
||
|
u'41-3562-3464'
|
||
|
>>> f.clean('41 3562-3464')
|
||
|
u'41-3562-3464'
|
||
|
|
||
|
# BRStateSelect ##############################################################
|
||
|
|
||
|
>>> from django.contrib.localflavor.br.forms import BRStateSelect
|
||
|
>>> w = BRStateSelect()
|
||
|
>>> w.render('states', 'PR')
|
||
|
u'<select name="states">\n<option value="AC">Acre</option>\n<option value="AL">Alagoas</option>\n<option value="AP">Amap\xe1</option>\n<option value="AM">Amazonas</option>\n<option value="BA">Bahia</option>\n<option value="CE">Cear\xe1</option>\n<option value="DF">Distrito Federal</option>\n<option value="ES">Esp\xedrito Santo</option>\n<option value="GO">Goi\xe1s</option>\n<option value="MA">Maranh\xe3o</option>\n<option value="MT">Mato Grosso</option>\n<option value="MS">Mato Grosso do Sul</option>\n<option value="MG">Minas Gerais</option>\n<option value="PA">Par\xe1</option>\n<option value="PB">Para\xedba</option>\n<option value="PR" selected="selected">Paran\xe1</option>\n<option value="PE">Pernambuco</option>\n<option value="PI">Piau\xed</option>\n<option value="RJ">Rio de Janeiro</option>\n<option value="RN">Rio Grande do Norte</option>\n<option value="RS">Rio Grande do Sul</option>\n<option value="RO">Rond\xf4nia</option>\n<option value="RR">Roraima</option>\n<option value="SC">Santa Catarina</option>\n<option value="SP">S\xe3o Paulo</option>\n<option value="SE">Sergipe</option>\n<option value="TO">Tocantins</option>\n</select>'
|
||
|
"""
|