| | 3559 | # FRZipCodeField ############################################################# |
|---|
| | 3560 | |
|---|
| | 3561 | FRZipCodeField validates that the data is a valid FR zipcode. |
|---|
| | 3562 | >>> from django.contrib.localflavor.fr.forms import FRZipCodeField |
|---|
| | 3563 | >>> f = FRZipCodeField() |
|---|
| | 3564 | >>> f.clean('75001') |
|---|
| | 3565 | u'75001' |
|---|
| | 3566 | >>> f.clean('93200') |
|---|
| | 3567 | u'93200' |
|---|
| | 3568 | >>> f.clean('2A200') |
|---|
| | 3569 | Traceback (most recent call last): |
|---|
| | 3570 | ... |
|---|
| | 3571 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3572 | >>> f.clean('980001') |
|---|
| | 3573 | Traceback (most recent call last): |
|---|
| | 3574 | ... |
|---|
| | 3575 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3576 | >>> f.clean(None) |
|---|
| | 3577 | Traceback (most recent call last): |
|---|
| | 3578 | ... |
|---|
| | 3579 | ValidationError: [u'This field is required.'] |
|---|
| | 3580 | >>> f.clean('') |
|---|
| | 3581 | Traceback (most recent call last): |
|---|
| | 3582 | ... |
|---|
| | 3583 | ValidationError: [u'This field is required.'] |
|---|
| | 3584 | |
|---|
| | 3585 | >>> f = FRZipCodeField(required=False) |
|---|
| | 3586 | >>> f.clean('75001') |
|---|
| | 3587 | u'75001' |
|---|
| | 3588 | >>> f.clean('93200') |
|---|
| | 3589 | u'93200' |
|---|
| | 3590 | >>> f.clean('2A200') |
|---|
| | 3591 | Traceback (most recent call last): |
|---|
| | 3592 | ... |
|---|
| | 3593 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3594 | >>> f.clean('980001') |
|---|
| | 3595 | Traceback (most recent call last): |
|---|
| | 3596 | ... |
|---|
| | 3597 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3598 | >>> f.clean(None) |
|---|
| | 3599 | u'' |
|---|
| | 3600 | >>> f.clean('') |
|---|
| | 3601 | u'' |
|---|
| | 3602 | |
|---|
| | 3603 | |
|---|
| | 3604 | # FRPhoneNumberField ########################################################## |
|---|
| | 3605 | |
|---|
| | 3606 | FRPhoneNumberField validates that the data is a valid french phone number. |
|---|
| | 3607 | It's normalized to 0X XX XX XX XX format. Dots are valid too. |
|---|
| | 3608 | >>> from django.contrib.localflavor.fr.forms import FRPhoneNumberField |
|---|
| | 3609 | >>> f = FRPhoneNumberField() |
|---|
| | 3610 | >>> f.clean('01 55 44 58 64') |
|---|
| | 3611 | u'01 55 44 58 64' |
|---|
| | 3612 | >>> f.clean('0155445864') |
|---|
| | 3613 | u'01 55 44 58 64' |
|---|
| | 3614 | >>> f.clean('01 5544 5864') |
|---|
| | 3615 | u'01 55 44 58 64' |
|---|
| | 3616 | >>> f.clean('01 55.44.58.64') |
|---|
| | 3617 | u'01 55 44 58 64' |
|---|
| | 3618 | >>> f.clean('01.55.44.58.64') |
|---|
| | 3619 | u'01 55 44 58 64' |
|---|
| | 3620 | >>> f.clean('01,55,44,58,64') |
|---|
| | 3621 | Traceback (most recent call last): |
|---|
| | 3622 | ... |
|---|
| | 3623 | ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.'] |
|---|
| | 3624 | >>> f.clean('555 015 544') |
|---|
| | 3625 | Traceback (most recent call last): |
|---|
| | 3626 | ... |
|---|
| | 3627 | ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.'] |
|---|
| | 3628 | >>> f.clean(None) |
|---|
| | 3629 | Traceback (most recent call last): |
|---|
| | 3630 | ... |
|---|
| | 3631 | ValidationError: [u'This field is required.'] |
|---|
| | 3632 | >>> f.clean('') |
|---|
| | 3633 | Traceback (most recent call last): |
|---|
| | 3634 | ... |
|---|
| | 3635 | ValidationError: [u'This field is required.'] |
|---|
| | 3636 | |
|---|
| | 3637 | >>> f = FRPhoneNumberField(required=False) |
|---|
| | 3638 | >>> f.clean('01 55 44 58 64') |
|---|
| | 3639 | u'01 55 44 58 64' |
|---|
| | 3640 | >>> f.clean('0155445864') |
|---|
| | 3641 | u'01 55 44 58 64' |
|---|
| | 3642 | >>> f.clean('01 5544 5864') |
|---|
| | 3643 | u'01 55 44 58 64' |
|---|
| | 3644 | >>> f.clean('01 55.44.58.64') |
|---|
| | 3645 | u'01 55 44 58 64' |
|---|
| | 3646 | >>> f.clean('01.55.44.58.64') |
|---|
| | 3647 | u'01 55 44 58 64' |
|---|
| | 3648 | >>> f.clean('01,55,44,58,64') |
|---|
| | 3649 | Traceback (most recent call last): |
|---|
| | 3650 | ... |
|---|
| | 3651 | ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.'] |
|---|
| | 3652 | >>> f.clean('555 015 544') |
|---|
| | 3653 | Traceback (most recent call last): |
|---|
| | 3654 | ... |
|---|
| | 3655 | ValidationError: [u'Phone numbers must be in 0X XX XX XX XX format.'] |
|---|
| | 3656 | >>> f.clean(None) |
|---|
| | 3657 | u'' |
|---|
| | 3658 | >>> f.clean('') |
|---|
| | 3659 | u'' |
|---|
| | 3660 | |
|---|
| | 3661 | # FRDepartmentSelect ############################################################### |
|---|
| | 3662 | |
|---|
| | 3663 | FRDepartmentSelect is a Select widget that uses a list of french departments |
|---|
| | 3664 | including DOM TOM |
|---|
| | 3665 | >>> from django.contrib.localflavor.fr.forms import FRDepartmentSelect |
|---|
| | 3666 | >>> w = FRDepartmentSelect() |
|---|
| | 3667 | >>> print w.render('dep', 'Paris') |
|---|
| | 3668 | <select name="dep"> |
|---|
| | 3669 | <option value="01">01 - Ain</option> |
|---|
| | 3670 | <option value="02">02 - Aisne</option> |
|---|
| | 3671 | <option value="03">03 - Allier</option> |
|---|
| | 3672 | <option value="04">04 - Alpes-de-Haute-Provence</option> |
|---|
| | 3673 | <option value="05">05 - Hautes-Alpes</option> |
|---|
| | 3674 | <option value="06">06 - Alpes-Maritimes</option> |
|---|
| | 3675 | <option value="07">07 - Ardeche</option> |
|---|
| | 3676 | <option value="08">08 - Ardennes</option> |
|---|
| | 3677 | <option value="09">09 - Ariege</option> |
|---|
| | 3678 | <option value="10">10 - Aube</option> |
|---|
| | 3679 | <option value="11">11 - Aude</option> |
|---|
| | 3680 | <option value="12">12 - Aveyron</option> |
|---|
| | 3681 | <option value="13">13 - Bouches-du-Rhone</option> |
|---|
| | 3682 | <option value="14">14 - Calvados</option> |
|---|
| | 3683 | <option value="15">15 - Cantal</option> |
|---|
| | 3684 | <option value="16">16 - Charente</option> |
|---|
| | 3685 | <option value="17">17 - Charente-Maritime</option> |
|---|
| | 3686 | <option value="18">18 - Cher</option> |
|---|
| | 3687 | <option value="19">19 - Correze</option> |
|---|
| | 3688 | <option value="21">21 - Cote-d'Or</option> |
|---|
| | 3689 | <option value="22">22 - Cotes-d'Armor</option> |
|---|
| | 3690 | <option value="23">23 - Creuse</option> |
|---|
| | 3691 | <option value="24">24 - Dordogne</option> |
|---|
| | 3692 | <option value="25">25 - Doubs</option> |
|---|
| | 3693 | <option value="26">26 - Drome</option> |
|---|
| | 3694 | <option value="27">27 - Eure</option> |
|---|
| | 3695 | <option value="28">28 - Eure-et-Loire</option> |
|---|
| | 3696 | <option value="29">29 - Finistere</option> |
|---|
| | 3697 | <option value="2A">2A - Corse-du-Sud</option> |
|---|
| | 3698 | <option value="2B">2B - Haute-Corse</option> |
|---|
| | 3699 | <option value="30">30 - Gard</option> |
|---|
| | 3700 | <option value="31">31 - Haute-Garonne</option> |
|---|
| | 3701 | <option value="32">32 - Gers</option> |
|---|
| | 3702 | <option value="33">33 - Gironde</option> |
|---|
| | 3703 | <option value="34">34 - Herault</option> |
|---|
| | 3704 | <option value="35">35 - Ille-et-Vilaine</option> |
|---|
| | 3705 | <option value="36">36 - Indre</option> |
|---|
| | 3706 | <option value="37">37 - Indre-et-Loire</option> |
|---|
| | 3707 | <option value="38">38 - Isere</option> |
|---|
| | 3708 | <option value="39">39 - Jura</option> |
|---|
| | 3709 | <option value="40">40 - Landes</option> |
|---|
| | 3710 | <option value="41">41 - Loir-et-Cher</option> |
|---|
| | 3711 | <option value="42">42 - Loire</option> |
|---|
| | 3712 | <option value="43">43 - Haute-Loire</option> |
|---|
| | 3713 | <option value="44">44 - Loire-Atlantique</option> |
|---|
| | 3714 | <option value="45">45 - Loiret</option> |
|---|
| | 3715 | <option value="46">46 - Lot</option> |
|---|
| | 3716 | <option value="47">47 - Lot-et-Garonne</option> |
|---|
| | 3717 | <option value="48">48 - Lozere</option> |
|---|
| | 3718 | <option value="49">49 - Maine-et-Loire</option> |
|---|
| | 3719 | <option value="50">50 - Manche</option> |
|---|
| | 3720 | <option value="51">51 - Marne</option> |
|---|
| | 3721 | <option value="52">52 - Haute-Marne</option> |
|---|
| | 3722 | <option value="53">53 - Mayenne</option> |
|---|
| | 3723 | <option value="54">54 - Meurthe-et-Moselle</option> |
|---|
| | 3724 | <option value="55">55 - Meuse</option> |
|---|
| | 3725 | <option value="56">56 - Morbihan</option> |
|---|
| | 3726 | <option value="57">57 - Moselle</option> |
|---|
| | 3727 | <option value="58">58 - Nievre</option> |
|---|
| | 3728 | <option value="59">59 - Nord</option> |
|---|
| | 3729 | <option value="60">60 - Oise</option> |
|---|
| | 3730 | <option value="61">61 - Orne</option> |
|---|
| | 3731 | <option value="62">62 - Pas-de-Calais</option> |
|---|
| | 3732 | <option value="63">63 - Puy-de-Dome</option> |
|---|
| | 3733 | <option value="64">64 - Pyrenees-Atlantiques</option> |
|---|
| | 3734 | <option value="65">65 - Hautes-Pyrenees</option> |
|---|
| | 3735 | <option value="66">66 - Pyrenees-Orientales</option> |
|---|
| | 3736 | <option value="67">67 - Bas-Rhin</option> |
|---|
| | 3737 | <option value="68">68 - Haut-Rhin</option> |
|---|
| | 3738 | <option value="69">69 - Rhone</option> |
|---|
| | 3739 | <option value="70">70 - Haute-Saone</option> |
|---|
| | 3740 | <option value="71">71 - Saone-et-Loire</option> |
|---|
| | 3741 | <option value="72">72 - Sarthe</option> |
|---|
| | 3742 | <option value="73">73 - Savoie</option> |
|---|
| | 3743 | <option value="74">74 - Haute-Savoie</option> |
|---|
| | 3744 | <option value="75">75 - Paris</option> |
|---|
| | 3745 | <option value="76">76 - Seine-Maritime</option> |
|---|
| | 3746 | <option value="77">77 - Seine-et-Marne</option> |
|---|
| | 3747 | <option value="78">78 - Yvelines</option> |
|---|
| | 3748 | <option value="79">79 - Deux-Sevres</option> |
|---|
| | 3749 | <option value="80">80 - Somme</option> |
|---|
| | 3750 | <option value="81">81 - Tarn</option> |
|---|
| | 3751 | <option value="82">82 - Tarn-et-Garonne</option> |
|---|
| | 3752 | <option value="83">83 - Var</option> |
|---|
| | 3753 | <option value="84">84 - Vaucluse</option> |
|---|
| | 3754 | <option value="85">85 - Vendee</option> |
|---|
| | 3755 | <option value="86">86 - Vienne</option> |
|---|
| | 3756 | <option value="87">87 - Haute-Vienne</option> |
|---|
| | 3757 | <option value="88">88 - Vosges</option> |
|---|
| | 3758 | <option value="89">89 - Yonne</option> |
|---|
| | 3759 | <option value="90">90 - Territoire de Belfort</option> |
|---|
| | 3760 | <option value="91">91 - Essonne</option> |
|---|
| | 3761 | <option value="92">92 - Hauts-de-Seine</option> |
|---|
| | 3762 | <option value="93">93 - Seine-Saint-Denis</option> |
|---|
| | 3763 | <option value="94">94 - Val-de-Marne</option> |
|---|
| | 3764 | <option value="95">95 - Val-d'Oise</option> |
|---|
| | 3765 | <option value="2A">2A - Corse du sud</option> |
|---|
| | 3766 | <option value="2B">2B - Haute Corse</option> |
|---|
| | 3767 | <option value="971">971 - Guadeloupe</option> |
|---|
| | 3768 | <option value="972">972 - Martinique</option> |
|---|
| | 3769 | <option value="973">973 - Guyane</option> |
|---|
| | 3770 | <option value="974">974 - La Reunion</option> |
|---|
| | 3771 | <option value="975">975 - Saint-Pierre-et-Miquelon</option> |
|---|
| | 3772 | <option value="976">976 - Mayotte</option> |
|---|
| | 3773 | <option value="984">984 - Terres Australes et Antarctiques</option> |
|---|
| | 3774 | <option value="986">986 - Wallis et Futuna</option> |
|---|
| | 3775 | <option value="987">987 - Polynesie Francaise</option> |
|---|
| | 3776 | <option value="988">988 - Nouvelle-Caledonie</option> |
|---|
| | 3777 | </select> |
|---|
| | 3778 | |
|---|
| | 3779 | # JPPostalCodeField ############################################################### |
|---|
| | 3780 | |
|---|
| | 3781 | A form field that validates its input is a Japanese postcode. |
|---|
| | 3782 | |
|---|
| | 3783 | Accepts 7 digits(with/out hyphen). |
|---|
| | 3784 | >>> from django.contrib.localflavor.jp.forms import JPPostalCodeField |
|---|
| | 3785 | >>> f = JPPostalCodeField() |
|---|
| | 3786 | >>> f.clean('251-0032') |
|---|
| | 3787 | u'2510032' |
|---|
| | 3788 | >>> f.clean('2510032') |
|---|
| | 3789 | u'2510032' |
|---|
| | 3790 | >>> f.clean('2510-032') |
|---|
| | 3791 | Traceback (most recent call last): |
|---|
| | 3792 | ... |
|---|
| | 3793 | ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.'] |
|---|
| | 3794 | >>> f.clean('251a0032') |
|---|
| | 3795 | Traceback (most recent call last): |
|---|
| | 3796 | ... |
|---|
| | 3797 | ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.'] |
|---|
| | 3798 | >>> f.clean('a51-0032') |
|---|
| | 3799 | Traceback (most recent call last): |
|---|
| | 3800 | ... |
|---|
| | 3801 | ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.'] |
|---|
| | 3802 | >>> f.clean('25100321') |
|---|
| | 3803 | Traceback (most recent call last): |
|---|
| | 3804 | ... |
|---|
| | 3805 | ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.'] |
|---|
| | 3806 | >>> f.clean('') |
|---|
| | 3807 | Traceback (most recent call last): |
|---|
| | 3808 | ... |
|---|
| | 3809 | ValidationError: [u'This field is required.'] |
|---|
| | 3810 | |
|---|
| | 3811 | >>> f = JPPostalCodeField(required=False) |
|---|
| | 3812 | >>> f.clean('251-0032') |
|---|
| | 3813 | u'2510032' |
|---|
| | 3814 | >>> f.clean('2510032') |
|---|
| | 3815 | u'2510032' |
|---|
| | 3816 | >>> f.clean('2510-032') |
|---|
| | 3817 | Traceback (most recent call last): |
|---|
| | 3818 | ... |
|---|
| | 3819 | ValidationError: [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.'] |
|---|
| | 3820 | >>> f.clean('') |
|---|
| | 3821 | u'' |
|---|
| | 3822 | >>> f.clean(None) |
|---|
| | 3823 | u'' |
|---|
| | 3824 | |
|---|
| | 3825 | # JPPrefectureSelect ############################################################### |
|---|
| | 3826 | |
|---|
| | 3827 | A Select widget that uses a list of Japanese prefectures as its choices. |
|---|
| | 3828 | >>> from django.contrib.localflavor.jp.forms import JPPrefectureSelect |
|---|
| | 3829 | >>> w = JPPrefectureSelect() |
|---|
| | 3830 | >>> print w.render('prefecture', 'kanagawa') |
|---|
| | 3831 | <select name="prefecture"> |
|---|
| | 3832 | <option value="hokkaido">Hokkaido</option> |
|---|
| | 3833 | <option value="aomori">Aomori</option> |
|---|
| | 3834 | <option value="iwate">Iwate</option> |
|---|
| | 3835 | <option value="miyagi">Miyagi</option> |
|---|
| | 3836 | <option value="akita">Akita</option> |
|---|
| | 3837 | <option value="yamagata">Yamagata</option> |
|---|
| | 3838 | <option value="fukushima">Fukushima</option> |
|---|
| | 3839 | <option value="ibaraki">Ibaraki</option> |
|---|
| | 3840 | <option value="tochigi">Tochigi</option> |
|---|
| | 3841 | <option value="gunma">Gunma</option> |
|---|
| | 3842 | <option value="saitama">Saitama</option> |
|---|
| | 3843 | <option value="chiba">Chiba</option> |
|---|
| | 3844 | <option value="tokyo">Tokyo</option> |
|---|
| | 3845 | <option value="kanagawa" selected="selected">Kanagawa</option> |
|---|
| | 3846 | <option value="yamanashi">Yamanashi</option> |
|---|
| | 3847 | <option value="nagano">Nagano</option> |
|---|
| | 3848 | <option value="niigata">Niigata</option> |
|---|
| | 3849 | <option value="toyama">Toyama</option> |
|---|
| | 3850 | <option value="ishikawa">Ishikawa</option> |
|---|
| | 3851 | <option value="fukui">Fukui</option> |
|---|
| | 3852 | <option value="gifu">Gifu</option> |
|---|
| | 3853 | <option value="shizuoka">Shizuoka</option> |
|---|
| | 3854 | <option value="aichi">Aichi</option> |
|---|
| | 3855 | <option value="mie">Mie</option> |
|---|
| | 3856 | <option value="shiga">Shiga</option> |
|---|
| | 3857 | <option value="kyoto">Kyoto</option> |
|---|
| | 3858 | <option value="osaka">Osaka</option> |
|---|
| | 3859 | <option value="hyogo">Hyogo</option> |
|---|
| | 3860 | <option value="nara">Nara</option> |
|---|
| | 3861 | <option value="wakayama">Wakayama</option> |
|---|
| | 3862 | <option value="tottori">Tottori</option> |
|---|
| | 3863 | <option value="shimane">Shimane</option> |
|---|
| | 3864 | <option value="okayama">Okayama</option> |
|---|
| | 3865 | <option value="hiroshima">Hiroshima</option> |
|---|
| | 3866 | <option value="yamaguchi">Yamaguchi</option> |
|---|
| | 3867 | <option value="tokushima">Tokushima</option> |
|---|
| | 3868 | <option value="kagawa">Kagawa</option> |
|---|
| | 3869 | <option value="ehime">Ehime</option> |
|---|
| | 3870 | <option value="kochi">Kochi</option> |
|---|
| | 3871 | <option value="fukuoka">Fukuoka</option> |
|---|
| | 3872 | <option value="saga">Saga</option> |
|---|
| | 3873 | <option value="nagasaki">Nagasaki</option> |
|---|
| | 3874 | <option value="kumamoto">Kumamoto</option> |
|---|
| | 3875 | <option value="oita">Oita</option> |
|---|
| | 3876 | <option value="miyazaki">Miyazaki</option> |
|---|
| | 3877 | <option value="kagoshima">Kagoshima</option> |
|---|
| | 3878 | <option value="okinawa">Okinawa</option> |
|---|
| | 3879 | </select> |
|---|
| | 3880 | |
|---|
| | 3881 | # FIZipCodeField ############################################################# |
|---|
| | 3882 | |
|---|
| | 3883 | FIZipCodeField validates that the data is a valid FI zipcode. |
|---|
| | 3884 | >>> from django.contrib.localflavor.fi.forms import FIZipCodeField |
|---|
| | 3885 | >>> f = FIZipCodeField() |
|---|
| | 3886 | >>> f.clean('20540') |
|---|
| | 3887 | u'20540' |
|---|
| | 3888 | >>> f.clean('20101') |
|---|
| | 3889 | u'20101' |
|---|
| | 3890 | >>> f.clean('20s40') |
|---|
| | 3891 | Traceback (most recent call last): |
|---|
| | 3892 | ... |
|---|
| | 3893 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3894 | >>> f.clean('205401') |
|---|
| | 3895 | Traceback (most recent call last): |
|---|
| | 3896 | ... |
|---|
| | 3897 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3898 | >>> f.clean(None) |
|---|
| | 3899 | Traceback (most recent call last): |
|---|
| | 3900 | ... |
|---|
| | 3901 | ValidationError: [u'This field is required.'] |
|---|
| | 3902 | >>> f.clean('') |
|---|
| | 3903 | Traceback (most recent call last): |
|---|
| | 3904 | ... |
|---|
| | 3905 | ValidationError: [u'This field is required.'] |
|---|
| | 3906 | |
|---|
| | 3907 | >>> f = FIZipCodeField(required=False) |
|---|
| | 3908 | >>> f.clean('20540') |
|---|
| | 3909 | u'20540' |
|---|
| | 3910 | >>> f.clean('20101') |
|---|
| | 3911 | u'20101' |
|---|
| | 3912 | >>> f.clean('20s40') |
|---|
| | 3913 | Traceback (most recent call last): |
|---|
| | 3914 | ... |
|---|
| | 3915 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3916 | >>> f.clean('205401') |
|---|
| | 3917 | Traceback (most recent call last): |
|---|
| | 3918 | ... |
|---|
| | 3919 | ValidationError: [u'Enter a zip code in the format XXXXX.'] |
|---|
| | 3920 | >>> f.clean(None) |
|---|
| | 3921 | u'' |
|---|
| | 3922 | >>> f.clean('') |
|---|
| | 3923 | u'' |
|---|
| | 3924 | |
|---|
| | 3925 | # FIMunicipalitySelect ############################################################### |
|---|
| | 3926 | |
|---|
| | 3927 | A Select widget that uses a list of Finnish municipalities as its choices. |
|---|
| | 3928 | >>> from django.contrib.localflavor.fi.forms import FIMunicipalitySelect |
|---|
| | 3929 | >>> w = FIMunicipalitySelect() |
|---|
| | 3930 | >>> unicode(w.render('municipalities', 'turku')) |
|---|
| | 3931 | 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="kajaani">Kajaani</option>\n<option value="kalajoki">Kalajoki</option>\n<option value="kalvola">Kalvola</option>\n<option value="kangasala">Kangasala</option>\n<option value="kangasniemi">Kangasniemi</option>\n<option value="kankaanpaa">Kankaanp\xe4\xe4</option>\n<option value="kannonkoski">Kannonkoski</option>\n<option value="kannus">Kannus</option>\n<option value="karijoki">Karijoki</option>\n<option value="karjaa">Karjaa</option>\n<option value="karjalohja">Karjalohja</option>\n<option value="karkkila">Karkkila</option>\n<option value="karstula">Karstula</option>\n<option value="karttula">Karttula</option>\n<option value="karvia">Karvia</option>\n<option value="kaskinen">Kaskinen</option>\n<option value="kauhajoki">Kauhajoki</option>\n<option value="kauhava">Kauhava</option>\n<option value="kauniainen">Kauniainen</option>\n<option value="kaustinen">Kaustinen</option>\n<option value="keitele">Keitele</option>\n<option value="kemi">Kemi</option>\n<option value="kemijarvi">Kemij\xe4rvi</option>\n<option value="keminmaa">Keminmaa</option>\n<option value="kemio">Kemi\xf6</option>\n<option value="kempele">Kempele</option>\n<option value="kerava">Kerava</option>\n<option value="kerimaki">Kerim\xe4ki</option>\n<option value="kestila">Kestil\xe4</option>\n<option value="kesalahti">Kes\xe4lahti</option>\n<option value="keuruu">Keuruu</option>\n<option value="kihnio">Kihni\xf6</option>\n<option value="kiikala">Kiikala</option>\n<option value="kiikoinen">Kiikoinen</option>\n<option value="kiiminki">Kiiminki</option>\n<option value="kinnula">Kinnula</option>\n<option value="kirkkonummi">Kirkkonummi</option>\n<option value="kisko">Kisko</option>\n<option value="kitee">Kitee</option>\n<option value="kittila">Kittil\xe4</option>\n<option value="kiukainen">Kiukainen</option>\n<option value="kiuruvesi">Kiuruvesi</option>\n<option value="kivijarvi">Kivij\xe4rvi</option>\n<option value="kokemaki">Kokem\xe4ki</option>\n<option value="kokkola">Kokkola</option>\n<option value="kolari">Kolari</option>\n<option value="konnevesi">Konnevesi</option>\n<option value="kontiolahti">Kontiolahti</option>\n<option value="korpilahti">Korpilahti</option>\n<option value="korppoo">Korppoo</option>\n<option value="korsnas">Korsn\xe4s</option>\n<option value="kortesjarvi">Kortesj\xe4rvi</option>\n<option value="koskitl">KoskiTl</option>\n<option value="kotka">Kotka</option>\n<option value="kouvola">Kouvola</option>\n<option value="kristiinankaupunki">Kristiinankaupunki</option>\n<option value="kruunupyy">Kruunupyy</option>\n<option value="kuhmalahti">Kuhmalahti</option>\n<option value="kuhmo">Kuhmo</option>\n<option value="kuhmoinen">Kuhmoinen</option>\n<option value="kumlinge">Kumlinge</option>\n<option value="kuopio">Kuopio</option>\n<option value="kuortane">Kuortane</option>\n<option value="kurikka">Kurikka</option>\n<option value="kuru">Kuru</option>\n<option value="kustavi">Kustavi</option>\n<option value="kuusamo">Kuusamo</option>\n<option value="kuusankoski">Kuusankoski</option>\n<option value="kuusjoki">Kuusjoki</option>\n<option value="kylmakoski">Kylm\xe4koski</option>\n<option value="kyyjarvi">Kyyj\xe4rvi</option>\n<option value="kalvia">K\xe4lvi\xe4</option>\n<option value="karkola">K\xe4rk\xf6l\xe4</option>\n<option value="karsamaki">K\xe4rs\xe4m\xe4ki</option>\n<option value="kokar">K\xf6kar</option>\n<option value="koylio">K\xf6yli\xf6</option>\n<option value="lahti">Lahti</option>\n<option value="laihia">Laihia</option>\n<option value="laitila">Laitila</option>\n<option value="lammi">Lammi</option>\n<option value="lapinjarvi">Lapinj\xe4rvi</option>\n<option value="lapinlahti">Lapinlahti</option>\n<option value="lappajarvi">Lappaj\xe4rvi</option>\n<option value="lappeenranta">Lappeenranta</option>\n<option value="lappi">Lappi</option>\n<option value="lapua">Lapua</option>\n<option value="laukaa">Laukaa</option>\n<option value="lavia">Lavia</option>\n<option value="lehtimaki">Lehtim\xe4ki</option>\n<option value="leivonmaki">Leivonm\xe4ki</option>\n<option value="lemi">Lemi</option>\n<option value="lemland">Lemland</option>\n<option value="lempaala">Lemp\xe4\xe4l\xe4</option>\n<option value="lemu">Lemu</option>\n<option value="leppavirta">Lepp\xe4virta</option>\n<option value="lestijarvi">Lestij\xe4rvi</option>\n<option value="lieksa">Lieksa</option>\n<option value="lieto">Lieto</option>\n<option value="liljendal">Liljendal</option>\n<option value="liminka">Liminka</option>\n<option value="liperi">Liperi</option>\n<option value="lohja">Lohja</option>\n<option value="lohtaja">Lohtaja</option>\n<option value="loimaa">Loimaa</option>\n<option value="loppi">Loppi</option>\n<option value="loviisa">Loviisa</option>\n<option value="luhanka">Luhanka</option>\n<option value="lumijoki">Lumijoki</option>\n<option value="lumparland">Lumparland</option>\n<option value="luoto">Luoto</option>\n<option value="luumaki">Luum\xe4ki</option>\n<option value="luvia">Luvia</option>\n<option value="maalahti">Maalahti</option>\n<option value="maaninka">Maaninka</option>\n<option value="maarianhamina">Maarianhamina</option>\n<option value="marttila">Marttila</option>\n<option value="masku">Masku</option>\n<option value="mellila">Mellil\xe4</option>\n<option value="merijarvi">Merij\xe4rvi</option>\n<option value="merikarvia">Merikarvia</option>\n<option value="merimasku">Merimasku</option>\n<option value="miehikkala">Miehikk\xe4l\xe4</option>\n<option value="mikkeli">Mikkeli</option>\n<option value="mouhijarvi">Mouhij\xe4rvi</option>\n<option value="muhos">Muhos</option>\n<option value="multia">Multia</option>\n<option value="muonio">Muonio</option>\n<option value="mustasaari">Mustasaari</option>\n<option value="muurame">Muurame</option>\n<option value="muurla">Muurla</option>\n<option value="mynamaki">Myn\xe4m\xe4ki</option>\n<option value="myrskyla">Myrskyl\xe4</option>\n<option value="mantsala">M\xe4nts\xe4l\xe4</option>\n<option value="mantta">M\xe4ntt\xe4</option>\n<option value="mantyharju">M\xe4ntyharju</option>\n<option value="naantali">Naantali</option>\n<option value="nakkila">Nakkila</option>\n<option value="nastola">Nastola</option>\n<option value="nauvo">Nauvo</option>\n<option value="nilsia">Nilsi\xe4</option>\n<option value="nivala">Nivala</option>\n<option value="nokia">Nokia</option>\n<option value="noormarkku">Noormarkku</option>\n<option value="nousiainen">Nousiainen</option>\n<option value="nummi-pusula">Nummi-Pusula</option>\n<option value="nurmes">Nurmes</option>\n<option value="nurmijarvi">Nurmij\xe4rvi</option>\n<option value="nurmo">Nurmo</option>\n<option value="narpio">N\xe4rpi\xf6</option>\n<option value="oravainen">Oravainen</option>\n<option value="orimattila">Orimattila</option>\n<option value="oripaa">Orip\xe4\xe4</option>\n<option value="orivesi">Orivesi</option>\n<option value="oulainen">Oulainen</option>\n<option value="oulu">Oulu</option>\n<option value="oulunsalo">Oulunsalo</option>\n<option value="outokumpu">Outokumpu</option>\n<option value="padasjoki">Padasjoki</option>\n<option value="paimio">Paimio</option>\n<option value="paltamo">Paltamo</option>\n<option value="parainen">Parainen</option>\n<option value="parikkala">Parikkala</option>\n<option value="parkano">Parkano</option>\n<option value="pedersore">Peders\xf6re</option>\n<option value="pelkosenniemi">Pelkosenniemi</option>\n<option value="pello">Pello</option>\n<option value="perho">Perho</option>\n<option value="pernaja">Pernaja</option>\n<option value="pernio">Perni\xf6</option>\n<option value="pertteli">Pertteli</option>\n<option value="pertunmaa">Pertunmaa</option>\n<option value="petajavesi">Pet\xe4j\xe4vesi</option>\n<option value="pieksamaki">Pieks\xe4m\xe4ki</option>\n<option value="pielavesi">Pielavesi</option>\n<option value="pietarsaari">Pietarsaari</option>\n<option value="pihtipudas">Pihtipudas</option>\n<option value="piikkio">Piikki\xf6</option>\n<option value="piippola">Piippola</option>\n<option value="pirkkala">Pirkkala</option>\n<option value="pohja">Pohja</option>\n<option value="polvijarvi">Polvij\xe4rvi</option>\n<option value="pomarkku">Pomarkku</option>\n<option value="pori">Pori</option>\n<option value="pornainen">Pornainen</option>\n<option value="porvoo">Porvoo</option>\n<option value="posio">Posio</option>\n<option value="pudasjarvi">Pudasj\xe4rvi</option>\n<option value="pukkila">Pukkila</option>\n<option value="pulkkila">Pulkkila</option>\n<option value="punkaharju">Punkaharju</option>\n<option value="punkalaidun">Punkalaidun</option>\n<option value="puolanka">Puolanka</option>\n<option value="puumala">Puumala</option>\n<option value="pyhtaa">Pyht\xe4\xe4</option>\n<option value="pyhajoki">Pyh\xe4joki</option>\n<option value="pyhajarvi">Pyh\xe4j\xe4rvi</option>\n<option value="pyhanta">Pyh\xe4nt\xe4</option>\n<option value="pyharanta">Pyh\xe4ranta</option>\n<option value="pyhaselka">Pyh\xe4selk\xe4</option>\n<option value="pylkonmaki">Pylk\xf6nm\xe4ki</option>\n<option value="palkane">P\xe4lk\xe4ne</option>\n<option value="poytya">P\xf6yty\xe4</option>\n<option value="raahe">Raahe</option>\n<option value="raisio">Raisio</option>\n<option value="rantasalmi">Rantasalmi</option>\n<option value="rantsila">Rantsila</option>\n<option value="ranua">Ranua</option>\n<option value="rauma">Rauma</option>\n<option value="rautalampi">Rautalampi</option>\n<option value="rautavaara">Rautavaara</option>\n<option value="rautjarvi">Rautj\xe4rvi</option>\n<option value="reisjarvi">Reisj\xe4rvi</option>\n<option value="renko">Renko</option>\n<option value="riihimaki">Riihim\xe4ki</option>\n<option value="ristiina">Ristiina</option>\n<option value="ristijarvi">Ristij\xe4rvi</option>\n<option value="rovaniemi">Rovaniemi</option>\n<option value="ruokolahti">Ruokolahti</option>\n<option value="ruotsinpyhtaa">Ruotsinpyht\xe4\xe4</option>\n<option value="ruovesi">Ruovesi</option>\n<option value="rusko">Rusko</option>\n<option value="rymattyla">Rym\xe4ttyl\xe4</option>\n<option value="raakkyla">R\xe4\xe4kkyl\xe4</option>\n<option value="saarijarvi">Saarij\xe4rvi</option>\n<option value="salla">Salla</option>\n<option value="salo">Salo</option>\n<option value="saltvik">Saltvik</option>\n<option value="sammatti">Sammatti</option>\n<option value="sauvo">Sauvo</option>\n<option value="savitaipale">Savitaipale</option>\n<option value="savonlinna">Savonlinna</option>\n<option value="savonranta">Savonranta</option>\n<option value="savukoski">Savukoski</option>\n<option value="seinajoki">Sein\xe4joki</option>\n<option value="sievi">Sievi</option>\n<option value="siikainen">Siikainen</option>\n<option value="siikajoki">Siikajoki</option>\n<option value="siilinjarvi">Siilinj\xe4rvi</option>\n<option value="simo">Simo</option>\n<option value="sipoo">Sipoo</option>\n<option value="siuntio">Siuntio</option>\n<option value="sodankyla">Sodankyl\xe4</option>\n<option value="soini">Soini</option>\n<option value="somero">Somero</option>\n<option value="sonkajarvi">Sonkaj\xe4rvi</option>\n<option value="sotkamo">Sotkamo</option>\n<option value="sottunga">Sottunga</option>\n<option value="sulkava">Sulkava</option>\n<option value="sund">Sund</option>\n<option value="suomenniemi">Suomenniemi</option>\n<option value="suomusjarvi">Suomusj\xe4rvi</option>\n<option value="suomussalmi">Suomussalmi</option>\n<option value="suonenjoki">Suonenjoki</option>\n<option value="sysma">Sysm\xe4</option>\n<option value="sakyla">S\xe4kyl\xe4</option>\n<option value="sarkisalo">S\xe4rkisalo</option>\n<option value="taipalsaari">Taipalsaari</option>\n<option value="taivalkoski">Taivalkoski</option>\n<option value="taivassalo">Taivassalo</option>\n<option value="tammela">Tammela</option>\n<option value="tammisaari">Tammisaari</option>\n<option value="tampere">Tampere</option>\n<option value="tarvasjoki">Tarvasjoki</option>\n<option value="tervo">Tervo</option>\n<option value="tervola">Tervola</option>\n<option value="teuva">Teuva</option>\n<option value="tohmajarvi">Tohmaj\xe4rvi</option>\n<option value="toholampi">Toholampi</option>\n<option value="toivakka">Toivakka</option>\n<option value="tornio">Tornio</option>\n<option value="turku" selected="selected">Turku</option>\n<option value="tuulos">Tuulos</option>\n<option value="tuusniemi">Tuusniemi</option>\n<option value="tuusula">Tuusula</option>\n<option value="tyrnava">Tyrn\xe4v\xe4</option>\n<option value="toysa">T\xf6ys\xe4</option>\n<option value="ullava">Ullava</option>\n<option value="ulvila">Ulvila</option>\n<option value="urjala">Urjala</option>\n<option value="utajarvi">Utaj\xe4rvi</option>\n<option value="utsjoki">Utsjoki</option>\n<option value="uurainen">Uurainen</option>\n<option value="uusikaarlepyy">Uusikaarlepyy</option>\n<option value="uusikaupunki">Uusikaupunki</option>\n<option value="vaala">Vaala</option>\n<option value="vaasa">Vaasa</option>\n<option value="vahto">Vahto</option>\n<option value="valkeakoski">Valkeakoski</option>\n<option value="valkeala">Valkeala</option>\n<option value="valtimo">Valtimo</option>\n<option value="vammala">Vammala</option>\n<option value="vampula">Vampula</option>\n<option value="vantaa">Vantaa</option>\n<option value="varkaus">Varkaus</option>\n<option value="varpaisjarvi">Varpaisj\xe4rvi</option>\n<option value="vehmaa">Vehmaa</option>\n<option value="velkua">Velkua</option>\n<option value="vesanto">Vesanto</option>\n<option value="vesilahti">Vesilahti</option>\n<option value="veteli">Veteli</option>\n<option value="vierema">Vierem\xe4</option>\n<option value="vihanti">Vihanti</option>\n<option value="vihti">Vihti</option>\n<option value="viitasaari">Viitasaari</option>\n<option value="vilppula">Vilppula</option>\n<option value="vimpeli">Vimpeli</option>\n<option value="virolahti">Virolahti</option>\n<option value="virrat">Virrat</option>\n<option value="vardo">V\xe5rd\xf6</option>\n<option value="vahakyro">V\xe4h\xe4kyr\xf6</option>\n<option value="vastanfjard">V\xe4stanfj\xe4rd</option>\n<option value="voyri-maksamaa">V\xf6yri-Maksamaa</option>\n<option value="yliharma">Ylih\xe4rm\xe4</option>\n<option value="yli-ii">Yli-Ii</option>\n<option value="ylikiiminki">Ylikiiminki</option>\n<option value="ylistaro">Ylistaro</option>\n<option value="ylitornio">Ylitornio</option>\n<option value="ylivieska">Ylivieska</option>\n<option value="ylamaa">Yl\xe4maa</option>\n<option value="ylane">Yl\xe4ne</option>\n<option value="ylojarvi">Yl\xf6j\xe4rvi</option>\n<option value="ypaja">Yp\xe4j\xe4</option>\n<option value="aetsa">\xc4ets\xe4</option>\n<option value="ahtari">\xc4ht\xe4ri</option>\n<option value="aanekoski">\xc4\xe4nekoski</option>\n</select>' |
|---|
| | 3932 | |
|---|
| | 3933 | # FISocialSecurityNumber |
|---|
| | 3934 | ############################################################## |
|---|
| | 3935 | |
|---|
| | 3936 | >>> from django.contrib.localflavor.fi.forms import FISocialSecurityNumber |
|---|
| | 3937 | >>> f = FISocialSecurityNumber() |
|---|
| | 3938 | >>> f.clean('010101-0101') |
|---|
| | 3939 | u'010101-0101' |
|---|
| | 3940 | >>> f.clean('010101+0101') |
|---|
| | 3941 | u'010101+0101' |
|---|
| | 3942 | >>> f.clean('010101A0101') |
|---|
| | 3943 | u'010101A0101' |
|---|
| | 3944 | >>> f.clean('101010-0102') |
|---|
| | 3945 | Traceback (most recent call last): |
|---|
| | 3946 | ... |
|---|
| | 3947 | ValidationError: [u'Enter a valid Finnish social security number.'] |
|---|
| | 3948 | >>> f.clean('10a010-0101') |
|---|
| | 3949 | Traceback (most recent call last): |
|---|
| | 3950 | ... |
|---|
| | 3951 | ValidationError: [u'Enter a valid Finnish social security number.'] |
|---|
| | 3952 | >>> f.clean('101010-0\xe401') |
|---|
| | 3953 | Traceback (most recent call last): |
|---|
| | 3954 | ... |
|---|
| | 3955 | ValidationError: [u'Enter a valid Finnish social security number.'] |
|---|
| | 3956 | >>> f.clean('101010b0101') |
|---|
| | 3957 | Traceback (most recent call last): |
|---|
| | 3958 | ... |
|---|
| | 3959 | ValidationError: [u'Enter a valid Finnish social security number.'] |
|---|
| | 3960 | >>> f.clean('') |
|---|
| | 3961 | Traceback (most recent call last): |
|---|
| | 3962 | ... |
|---|
| | 3963 | ValidationError: [u'This field is required.'] |
|---|
| | 3964 | |
|---|
| | 3965 | >>> f.clean(None) |
|---|
| | 3966 | Traceback (most recent call last): |
|---|
| | 3967 | ... |
|---|
| | 3968 | ValidationError: [u'This field is required.'] |
|---|
| | 3969 | >>> f = FISocialSecurityNumber(required=False) |
|---|
| | 3970 | >>> f.clean('010101-0101') |
|---|
| | 3971 | u'010101-0101' |
|---|
| | 3972 | >>> f.clean(None) |
|---|
| | 3973 | u'' |
|---|
| | 3974 | >>> f.clean('') |
|---|
| | 3975 | u'' |
|---|
| | 3976 | |
|---|