Author: mtredinnick
Date: 2007-03-30 05:04:22 -0500 (Fri, 30 Mar 2007)
New Revision: 4867

Added:
   django/trunk/django/contrib/localflavor/fi/
   django/trunk/django/contrib/localflavor/fi/__init__.py
   django/trunk/django/contrib/localflavor/fi/fi_municipalities.py
   django/trunk/django/contrib/localflavor/fi/forms.py
Modified:
   django/trunk/AUTHORS
   django/trunk/tests/regressiontests/forms/tests.py
Log:
Fixed #3847 -- Added Finnish localflavor contribution from Ville 
S?\195?\164?\195?\164vuori.


Modified: django/trunk/AUTHORS
===================================================================
--- django/trunk/AUTHORS        2007-03-30 06:48:19 UTC (rev 4866)
+++ django/trunk/AUTHORS        2007-03-30 10:04:22 UTC (rev 4867)
@@ -184,6 +184,7 @@
     Radek Švarz <http://www.svarz.cz/translate/>
     Swaroop C H <http://www.swaroopch.info>
     Aaron Swartz <http://www.aaronsw.com/>
+    Ville Säävuori <http://www.unessa.net/>
     Tyson Tate <[EMAIL PROTECTED]>
     Tom Tobin
     Joe Topjian <http://joe.terrarum.net/geek/code/python/django/>

Added: django/trunk/django/contrib/localflavor/fi/__init__.py
===================================================================

Added: django/trunk/django/contrib/localflavor/fi/fi_municipalities.py
===================================================================
--- django/trunk/django/contrib/localflavor/fi/fi_municipalities.py             
                (rev 0)
+++ django/trunk/django/contrib/localflavor/fi/fi_municipalities.py     
2007-03-30 10:04:22 UTC (rev 4867)
@@ -0,0 +1,427 @@
+# -*- coding: utf-8 -*-
+"""
+An alphabetical list of Finnish municipalities for use as `choices` in a
+formfield.
+
+This exists in this standalone file so that it's only imported into memory
+when explicitly needed.
+"""
+
+MUNICIPALITY_CHOICES = (
+    ('akaa', u"Akaa"),
+    ('alaharma', u"Alahärmä"),
+    ('alajarvi', u"Alajärvi"),
+    ('alastaro', u"Alastaro"),
+    ('alavieska', u"Alavieska"),
+    ('alavus', u"Alavus"),
+    ('anjalankoski', u"Anjalankoski"),
+    ('artjarvi', u"Artjärvi"),
+    ('asikkala', u"Asikkala"),
+    ('askainen', u"Askainen"),
+    ('askola', u"Askola"),
+    ('aura', u"Aura"),
+    ('brando', u"Brändö"),
+    ('dragsfjard', u"Dragsfjärd"),
+    ('eckero', u"Eckerö"),
+    ('elimaki', u"Elimäki"),
+    ('eno', u"Eno"),
+    ('enonkoski', u"Enonkoski"),
+    ('enontekio', u"Enontekiö"),
+    ('espoo', u"Espoo"),
+    ('eura', u"Eura"),
+    ('eurajoki', u"Eurajoki"),
+    ('evijarvi', u"Evijärvi"),
+    ('finstrom', u"Finström"),
+    ('forssa', u"Forssa"),
+    ('foglo', u"Föglö"),
+    ('geta', u"Geta"),
+    ('haapajarvi', u"Haapajärvi"),
+    ('haapavesi', u"Haapavesi"),
+    ('hailuoto', u"Hailuoto"),
+    ('halikko', u"Halikko"),
+    ('halsua', u"Halsua"),
+    ('hamina', u"Hamina"),
+    ('hammarland', u"Hammarland"),
+    ('hankasalmi', u"Hankasalmi"),
+    ('hanko', u"Hanko"),
+    ('harjavalta', u"Harjavalta"),
+    ('hartola', u"Hartola"),
+    ('hattula', u"Hattula"),
+    ('hauho', u"Hauho"),
+    ('haukipudas', u"Haukipudas"),
+    ('hausjarvi', u"Hausjärvi"),
+    ('heinola', u"Heinola"),
+    ('heinavesi', u"Heinävesi"),
+    ('helsinki', u"Helsinki"),
+    ('himanka', u"Himanka"),
+    ('hirvensalmi', u"Hirvensalmi"),
+    ('hollola', u"Hollola"),
+    ('honkajoki', u"Honkajoki"),
+    ('houtskari', u"Houtskari"),
+    ('huittinen', u"Huittinen"),
+    ('humppila', u"Humppila"),
+    ('hyrynsalmi', u"Hyrynsalmi"),
+    ('hyvinkaa', u"Hyvinkää"),
+    ('hameenkoski', u"Hämeenkoski"),
+    ('hameenkyro', u"Hämeenkyrö"),
+    ('hameenlinna', u"Hämeenlinna"),
+    ('ii', u"Ii"),
+    ('iisalmi', u"Iisalmi"),
+    ('iitti', u"Iitti"),
+    ('ikaalinen', u"Ikaalinen"),
+    ('ilmajoki', u"Ilmajoki"),
+    ('ilomantsi', u"Ilomantsi"),
+    ('imatra', u"Imatra"),
+    ('inari', u"Inari"),
+    ('inio', u"Iniö"),
+    ('inkoo', u"Inkoo"),
+    ('isojoki', u"Isojoki"),
+    ('isokyro', u"Isokyrö"),
+    ('jaala', u"Jaala"),
+    ('jalasjarvi', u"Jalasjärvi"),
+    ('janakkala', u"Janakkala"),
+    ('joensuu', u"Joensuu"),
+    ('jokioinen', u"Jokioinen"),
+    ('jomala', u"Jomala"),
+    ('joroinen', u"Joroinen"),
+    ('joutsa', u"Joutsa"),
+    ('joutseno', u"Joutseno"),
+    ('juankoski', u"Juankoski"),
+    ('jurva', u"Jurva"),
+    ('juuka', u"Juuka"),
+    ('juupajoki', u"Juupajoki"),
+    ('juva', u"Juva"),
+    ('jyvaskyla', u"Jyväskylä"),
+    ('jyvaskylan_mlk', u"Jyväskylän maalaiskunta"),
+    ('jamijarvi', u"Jämijärvi"),
+    ('jamsa', u"Jämsä"),
+    ('jamsankoski', u"Jämsänkoski"),
+    ('jarvenpaa', u"Järvenpää"),
+    ('kaarina', u"Kaarina"),
+    ('kaavi', u"Kaavi"),
+    ('kajaani', u"Kajaani"),
+    ('kalajoki', u"Kalajoki"),
+    ('kalvola', u"Kalvola"),
+    ('kangasala', u"Kangasala"),
+    ('kangasniemi', u"Kangasniemi"),
+    ('kankaanpaa', u"Kankaanpää"),
+    ('kannonkoski', u"Kannonkoski"),
+    ('kannus', u"Kannus"),
+    ('karijoki', u"Karijoki"),
+    ('karjaa', u"Karjaa"),
+    ('karjalohja', u"Karjalohja"),
+    ('karkkila', u"Karkkila"),
+    ('karstula', u"Karstula"),
+    ('karttula', u"Karttula"),
+    ('karvia', u"Karvia"),
+    ('kaskinen', u"Kaskinen"),
+    ('kauhajoki', u"Kauhajoki"),
+    ('kauhava', u"Kauhava"),
+    ('kauniainen', u"Kauniainen"),
+    ('kaustinen', u"Kaustinen"),
+    ('keitele', u"Keitele"),
+    ('kemi', u"Kemi"),
+    ('kemijarvi', u"Kemijärvi"),
+    ('keminmaa', u"Keminmaa"),
+    ('kemio', u"Kemiö"),
+    ('kempele', u"Kempele"),
+    ('kerava', u"Kerava"),
+    ('kerimaki', u"Kerimäki"),
+    ('kestila', u"Kestilä"),
+    ('kesalahti', u"Kesälahti"),
+    ('keuruu', u"Keuruu"),
+    ('kihnio', u"Kihniö"),
+    ('kiikala', u"Kiikala"),
+    ('kiikoinen', u"Kiikoinen"),
+    ('kiiminki', u"Kiiminki"),
+    ('kinnula', u"Kinnula"),
+    ('kirkkonummi', u"Kirkkonummi"),
+    ('kisko', u"Kisko"),
+    ('kitee', u"Kitee"),
+    ('kittila', u"Kittilä"),
+    ('kiukainen', u"Kiukainen"),
+    ('kiuruvesi', u"Kiuruvesi"),
+    ('kivijarvi', u"Kivijärvi"),
+    ('kokemaki', u"Kokemäki"),
+    ('kokkola', u"Kokkola"),
+    ('kolari', u"Kolari"),
+    ('konnevesi', u"Konnevesi"),
+    ('kontiolahti', u"Kontiolahti"),
+    ('korpilahti', u"Korpilahti"),
+    ('korppoo', u"Korppoo"),
+    ('korsnas', u"Korsnäs"),
+    ('kortesjarvi', u"Kortesjärvi"),
+    ('koskitl', u"KoskiTl"),
+    ('kotka', u"Kotka"),
+    ('kouvola', u"Kouvola"),
+    ('kristiinankaupunki', u"Kristiinankaupunki"),
+    ('kruunupyy', u"Kruunupyy"),
+    ('kuhmalahti', u"Kuhmalahti"),
+    ('kuhmo', u"Kuhmo"),
+    ('kuhmoinen', u"Kuhmoinen"),
+    ('kumlinge', u"Kumlinge"),
+    ('kuopio', u"Kuopio"),
+    ('kuortane', u"Kuortane"),
+    ('kurikka', u"Kurikka"),
+    ('kuru', u"Kuru"),
+    ('kustavi', u"Kustavi"),
+    ('kuusamo', u"Kuusamo"),
+    ('kuusankoski', u"Kuusankoski"),
+    ('kuusjoki', u"Kuusjoki"),
+    ('kylmakoski', u"Kylmäkoski"),
+    ('kyyjarvi', u"Kyyjärvi"),
+    ('kalvia', u"Kälviä"),
+    ('karkola', u"Kärkölä"),
+    ('karsamaki', u"Kärsämäki"),
+    ('kokar', u"Kökar"),
+    ('koylio', u"Köyliö"),
+    ('lahti', u"Lahti"),
+    ('laihia', u"Laihia"),
+    ('laitila', u"Laitila"),
+    ('lammi', u"Lammi"),
+    ('lapinjarvi', u"Lapinjärvi"),
+    ('lapinlahti', u"Lapinlahti"),
+    ('lappajarvi', u"Lappajärvi"),
+    ('lappeenranta', u"Lappeenranta"),
+    ('lappi', u"Lappi"),
+    ('lapua', u"Lapua"),
+    ('laukaa', u"Laukaa"),
+    ('lavia', u"Lavia"),
+    ('lehtimaki', u"Lehtimäki"),
+    ('leivonmaki', u"Leivonmäki"),
+    ('lemi', u"Lemi"),
+    ('lemland', u"Lemland"),
+    ('lempaala', u"Lempäälä"),
+    ('lemu', u"Lemu"),
+    ('leppavirta', u"Leppävirta"),
+    ('lestijarvi', u"Lestijärvi"),
+    ('lieksa', u"Lieksa"),
+    ('lieto', u"Lieto"),
+    ('liljendal', u"Liljendal"),
+    ('liminka', u"Liminka"),
+    ('liperi', u"Liperi"),
+    ('lohja', u"Lohja"),
+    ('lohtaja', u"Lohtaja"),
+    ('loimaa', u"Loimaa"),
+    ('loppi', u"Loppi"),
+    ('loviisa', u"Loviisa"),
+    ('luhanka', u"Luhanka"),
+    ('lumijoki', u"Lumijoki"),
+    ('lumparland', u"Lumparland"),
+    ('luoto', u"Luoto"),
+    ('luumaki', u"Luumäki"),
+    ('luvia', u"Luvia"),
+    ('maalahti', u"Maalahti"),
+    ('maaninka', u"Maaninka"),
+    ('maarianhamina', u"Maarianhamina"),
+    ('marttila', u"Marttila"),
+    ('masku', u"Masku"),
+    ('mellila', u"Mellilä"),
+    ('merijarvi', u"Merijärvi"),
+    ('merikarvia', u"Merikarvia"),
+    ('merimasku', u"Merimasku"),
+    ('miehikkala', u"Miehikkälä"),
+    ('mikkeli', u"Mikkeli"),
+    ('mouhijarvi', u"Mouhijärvi"),
+    ('muhos', u"Muhos"),
+    ('multia', u"Multia"),
+    ('muonio', u"Muonio"),
+    ('mustasaari', u"Mustasaari"),
+    ('muurame', u"Muurame"),
+    ('muurla', u"Muurla"),
+    ('mynamaki', u"Mynämäki"),
+    ('myrskyla', u"Myrskylä"),
+    ('mantsala', u"Mäntsälä"),
+    ('mantta', u"Mänttä"),
+    ('mantyharju', u"Mäntyharju"),
+    ('naantali', u"Naantali"),
+    ('nakkila', u"Nakkila"),
+    ('nastola', u"Nastola"),
+    ('nauvo', u"Nauvo"),
+    ('nilsia', u"Nilsiä"),
+    ('nivala', u"Nivala"),
+    ('nokia', u"Nokia"),
+    ('noormarkku', u"Noormarkku"),
+    ('nousiainen', u"Nousiainen"),
+    ('nummi-pusula', u"Nummi-Pusula"),
+    ('nurmes', u"Nurmes"),
+    ('nurmijarvi', u"Nurmijärvi"),
+    ('nurmo', u"Nurmo"),
+    ('narpio', u"Närpiö"),
+    ('oravainen', u"Oravainen"),
+    ('orimattila', u"Orimattila"),
+    ('oripaa', u"Oripää"),
+    ('orivesi', u"Orivesi"),
+    ('oulainen', u"Oulainen"),
+    ('oulu', u"Oulu"),
+    ('oulunsalo', u"Oulunsalo"),
+    ('outokumpu', u"Outokumpu"),
+    ('padasjoki', u"Padasjoki"),
+    ('paimio', u"Paimio"),
+    ('paltamo', u"Paltamo"),
+    ('parainen', u"Parainen"),
+    ('parikkala', u"Parikkala"),
+    ('parkano', u"Parkano"),
+    ('pedersore', u"Pedersöre"),
+    ('pelkosenniemi', u"Pelkosenniemi"),
+    ('pello', u"Pello"),
+    ('perho', u"Perho"),
+    ('pernaja', u"Pernaja"),
+    ('pernio', u"Perniö"),
+    ('pertteli', u"Pertteli"),
+    ('pertunmaa', u"Pertunmaa"),
+    ('petajavesi', u"Petäjävesi"),
+    ('pieksamaki', u"Pieksämäki"),
+    ('pielavesi', u"Pielavesi"),
+    ('pietarsaari', u"Pietarsaari"),
+    ('pihtipudas', u"Pihtipudas"),
+    ('piikkio', u"Piikkiö"),
+    ('piippola', u"Piippola"),
+    ('pirkkala', u"Pirkkala"),
+    ('pohja', u"Pohja"),
+    ('polvijarvi', u"Polvijärvi"),
+    ('pomarkku', u"Pomarkku"),
+    ('pori', u"Pori"),
+    ('pornainen', u"Pornainen"),
+    ('porvoo', u"Porvoo"),
+    ('posio', u"Posio"),
+    ('pudasjarvi', u"Pudasjärvi"),
+    ('pukkila', u"Pukkila"),
+    ('pulkkila', u"Pulkkila"),
+    ('punkaharju', u"Punkaharju"),
+    ('punkalaidun', u"Punkalaidun"),
+    ('puolanka', u"Puolanka"),
+    ('puumala', u"Puumala"),
+    ('pyhtaa', u"Pyhtää"),
+    ('pyhajoki', u"Pyhäjoki"),
+    ('pyhajarvi', u"Pyhäjärvi"),
+    ('pyhanta', u"Pyhäntä"),
+    ('pyharanta', u"Pyhäranta"),
+    ('pyhaselka', u"Pyhäselkä"),
+    ('pylkonmaki', u"Pylkönmäki"),
+    ('palkane', u"Pälkäne"),
+    ('poytya', u"Pöytyä"),
+    ('raahe', u"Raahe"),
+    ('raisio', u"Raisio"),
+    ('rantasalmi', u"Rantasalmi"),
+    ('rantsila', u"Rantsila"),
+    ('ranua', u"Ranua"),
+    ('rauma', u"Rauma"),
+    ('rautalampi', u"Rautalampi"),
+    ('rautavaara', u"Rautavaara"),
+    ('rautjarvi', u"Rautjärvi"),
+    ('reisjarvi', u"Reisjärvi"),
+    ('renko', u"Renko"),
+    ('riihimaki', u"Riihimäki"),
+    ('ristiina', u"Ristiina"),
+    ('ristijarvi', u"Ristijärvi"),
+    ('rovaniemi', u"Rovaniemi"),
+    ('ruokolahti', u"Ruokolahti"),
+    ('ruotsinpyhtaa', u"Ruotsinpyhtää"),
+    ('ruovesi', u"Ruovesi"),
+    ('rusko', u"Rusko"),
+    ('rymattyla', u"Rymättylä"),
+    ('raakkyla', u"Rääkkylä"),
+    ('saarijarvi', u"Saarijärvi"),
+    ('salla', u"Salla"),
+    ('salo', u"Salo"),
+    ('saltvik', u"Saltvik"),
+    ('sammatti', u"Sammatti"),
+    ('sauvo', u"Sauvo"),
+    ('savitaipale', u"Savitaipale"),
+    ('savonlinna', u"Savonlinna"),
+    ('savonranta', u"Savonranta"),
+    ('savukoski', u"Savukoski"),
+    ('seinajoki', u"Seinäjoki"),
+    ('sievi', u"Sievi"),
+    ('siikainen', u"Siikainen"),
+    ('siikajoki', u"Siikajoki"),
+    ('siilinjarvi', u"Siilinjärvi"),
+    ('simo', u"Simo"),
+    ('sipoo', u"Sipoo"),
+    ('siuntio', u"Siuntio"),
+    ('sodankyla', u"Sodankylä"),
+    ('soini', u"Soini"),
+    ('somero', u"Somero"),
+    ('sonkajarvi', u"Sonkajärvi"),
+    ('sotkamo', u"Sotkamo"),
+    ('sottunga', u"Sottunga"),
+    ('sulkava', u"Sulkava"),
+    ('sund', u"Sund"),
+    ('suomenniemi', u"Suomenniemi"),
+    ('suomusjarvi', u"Suomusjärvi"),
+    ('suomussalmi', u"Suomussalmi"),
+    ('suonenjoki', u"Suonenjoki"),
+    ('sysma', u"Sysmä"),
+    ('sakyla', u"Säkylä"),
+    ('sarkisalo', u"Särkisalo"),
+    ('taipalsaari', u"Taipalsaari"),
+    ('taivalkoski', u"Taivalkoski"),
+    ('taivassalo', u"Taivassalo"),
+    ('tammela', u"Tammela"),
+    ('tammisaari', u"Tammisaari"),
+    ('tampere', u"Tampere"),
+    ('tarvasjoki', u"Tarvasjoki"),
+    ('tervo', u"Tervo"),
+    ('tervola', u"Tervola"),
+    ('teuva', u"Teuva"),
+    ('tohmajarvi', u"Tohmajärvi"),
+    ('toholampi', u"Toholampi"),
+    ('toivakka', u"Toivakka"),
+    ('tornio', u"Tornio"),
+    ('turku', u"Turku"),
+    ('tuulos', u"Tuulos"),
+    ('tuusniemi', u"Tuusniemi"),
+    ('tuusula', u"Tuusula"),
+    ('tyrnava', u"Tyrnävä"),
+    ('toysa', u"Töysä"),
+    ('ullava', u"Ullava"),
+    ('ulvila', u"Ulvila"),
+    ('urjala', u"Urjala"),
+    ('utajarvi', u"Utajärvi"),
+    ('utsjoki', u"Utsjoki"),
+    ('uurainen', u"Uurainen"),
+    ('uusikaarlepyy', u"Uusikaarlepyy"),
+    ('uusikaupunki', u"Uusikaupunki"),
+    ('vaala', u"Vaala"),
+    ('vaasa', u"Vaasa"),
+    ('vahto', u"Vahto"),
+    ('valkeakoski', u"Valkeakoski"),
+    ('valkeala', u"Valkeala"),
+    ('valtimo', u"Valtimo"),
+    ('vammala', u"Vammala"),
+    ('vampula', u"Vampula"),
+    ('vantaa', u"Vantaa"),
+    ('varkaus', u"Varkaus"),
+    ('varpaisjarvi', u"Varpaisjärvi"),
+    ('vehmaa', u"Vehmaa"),
+    ('velkua', u"Velkua"),
+    ('vesanto', u"Vesanto"),
+    ('vesilahti', u"Vesilahti"),
+    ('veteli', u"Veteli"),
+    ('vierema', u"Vieremä"),
+    ('vihanti', u"Vihanti"),
+    ('vihti', u"Vihti"),
+    ('viitasaari', u"Viitasaari"),
+    ('vilppula', u"Vilppula"),
+    ('vimpeli', u"Vimpeli"),
+    ('virolahti', u"Virolahti"),
+    ('virrat', u"Virrat"),
+    ('vardo', u"Vårdö"),
+    ('vahakyro', u"Vähäkyrö"),
+    ('vastanfjard', u"Västanfjärd"),
+    ('voyri-maksamaa', u"Vöyri-Maksamaa"),
+    ('yliharma', u"Ylihärmä"),
+    ('yli-ii', u"Yli-Ii"),
+    ('ylikiiminki', u"Ylikiiminki"),
+    ('ylistaro', u"Ylistaro"),
+    ('ylitornio', u"Ylitornio"),
+    ('ylivieska', u"Ylivieska"),
+    ('ylamaa', u"Ylämaa"),
+    ('ylane', u"Yläne"),
+    ('ylojarvi', u"Ylöjärvi"),
+    ('ypaja', u"Ypäjä"),
+    ('aetsa', u"Äetsä"),
+    ('ahtari', u"Ähtäri"),
+    ('aanekoski', u"Äänekoski")
+)
\ No newline at end of file

Added: django/trunk/django/contrib/localflavor/fi/forms.py
===================================================================
--- django/trunk/django/contrib/localflavor/fi/forms.py                         
(rev 0)
+++ django/trunk/django/contrib/localflavor/fi/forms.py 2007-03-30 10:04:22 UTC 
(rev 4867)
@@ -0,0 +1,22 @@
+"""
+FI-specific Form helpers
+"""
+
+from django.newforms import ValidationError
+from django.newforms.fields import RegexField, Select
+from django.utils.translation import gettext
+
+class FIZipCodeField(RegexField):
+    def __init__(self, *args, **kwargs):
+        super(FIZipCodeField, self).__init__(r'^\d{5}$',
+            max_length=None, min_length=None,
+            error_message=gettext(u'Enter a zip code in the format XXXXX.'),
+            *args, **kwargs)
+
+class FIMunicipalitySelect(Select):
+    """
+    A Select widget that uses a list of Finnish municipalities as its choices.
+    """
+    def __init__(self, attrs=None):
+        from fi_municipalities import MUNICIPALITY_CHOICES # relative import
+        super(FIMunicipalitySelect, self).__init__(attrs, 
choices=MUNICIPALITY_CHOICES)

Modified: django/trunk/tests/regressiontests/forms/tests.py
===================================================================
--- django/trunk/tests/regressiontests/forms/tests.py   2007-03-30 06:48:19 UTC 
(rev 4866)
+++ django/trunk/tests/regressiontests/forms/tests.py   2007-03-30 10:04:22 UTC 
(rev 4867)
@@ -3878,7 +3878,58 @@
 <option value="okinawa">Okinawa</option>
 </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</optio!
 n>\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 val!
 ue="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">Kaari!
 na</option>\n<option value="kaavi">Kaavi</option>\n<option val!
 ue="kaja
ani">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<opti!
 on value="kolari">Kolari</option>\n<option value="konnevesi">K!
 onnevesi
</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</o!
 ption>\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</op!
 tion>\n<option value="lemland">Lemland</option>\n<option value!
 ="lempaa
la">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="m!
 arttila">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<optio!
 n value="nastola">Nastola</option>\n<option value="nauvo">Nauv!
 o</optio
n>\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 v!
 alue="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</opti!
 on>\n<option value="sauvo">Sauvo</option>\n<option value="savi!
 taipale"
>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">Suo!
 mussalmi</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</opt
ion>\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">Vesan!
 to</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\x!
 e4rvi</o
ption>\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>'
+
 #################################
 # Tests of underlying functions #
 #################################


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to