Ticket #4092: 4092_6248_nullselect.diff
| File 4092_6248_nullselect.diff, 139.7 kB (added by dougn, 1 year ago) |
|---|
-
django/contrib/localflavor/ca/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.newforms.util import smart_unicode 8 8 from django.utils.translation import gettext, ugettext 9 9 import re … … 55 55 pass 56 56 raise ValidationError(u'Enter a Canadian province or territory.') 57 57 58 class CAProvinceSelect( Select):58 class CAProvinceSelect(NullSelect): 59 59 """ 60 A Select widget that uses a list of Canadian provinces and60 A NullSelect widget that uses a list of Canadian provinces and 61 61 territories as its choices. 62 62 """ 63 63 def __init__(self, attrs=None): -
django/contrib/localflavor/us/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.encoding import smart_unicode 8 8 from django.utils.translation import ugettext 9 9 import re … … 90 90 pass 91 91 raise ValidationError(u'Enter a U.S. state or territory.') 92 92 93 class USStateSelect( Select):93 class USStateSelect(NullSelect): 94 94 """ 95 A Select widget that uses a list of U.S. states/territories as its choices.95 A NullSelect widget that uses a list of U.S. states/territories as its choices. 96 96 """ 97 97 def __init__(self, attrs=None): 98 98 from us_states import STATE_CHOICES -
django/contrib/localflavor/de/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.translation import ugettext 8 8 import re 9 9 … … 16 16 error_message=ugettext('Enter a zip code in the format XXXXX.'), 17 17 *args, **kwargs) 18 18 19 class DEStateSelect( Select):19 class DEStateSelect(NullSelect): 20 20 """ 21 A Select widget that uses a list of DE states as its choices.21 A NullSelect widget that uses a list of DE states as its choices. 22 22 """ 23 23 def __init__(self, attrs=None): 24 24 from de_states import STATE_CHOICES -
django/contrib/localflavor/ch/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.encoding import smart_unicode 8 8 from django.utils.translation import ugettext 9 9 import re … … 35 35 return u'%s %s %s %s' % (value[0:3], value[3:6], value[6:8], value[8:10]) 36 36 raise ValidationError('Phone numbers must be in 0XX XXX XX XX format.') 37 37 38 class CHStateSelect( Select):38 class CHStateSelect(NullSelect): 39 39 """ 40 A Select widget that uses a list of CH states as its choices.40 A NullSelect widget that uses a list of CH states as its choices. 41 41 """ 42 42 def __init__(self, attrs=None): 43 43 from ch_states import STATE_CHOICES # relative import -
django/contrib/localflavor/cl/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.translation import ugettext 8 8 from django.utils.encoding import smart_unicode 9 9 10 10 11 class CLRegionSelect( Select):11 class CLRegionSelect(NullSelect): 12 12 """ 13 A Select widget that uses a list of Chilean Regions (Regiones)13 A NullSelect widget that uses a list of Chilean Regions (Regiones) 14 14 as its choices. 15 15 """ 16 16 def __init__(self, attrs=None): -
django/contrib/localflavor/fi/forms.py
old new 4 4 5 5 import re 6 6 from django.newforms import ValidationError 7 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES7 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 8 8 from django.utils.translation import ugettext 9 9 10 10 class FIZipCodeField(RegexField): … … 14 14 error_message=ugettext('Enter a zip code in the format XXXXX.'), 15 15 *args, **kwargs) 16 16 17 class FIMunicipalitySelect( Select):17 class FIMunicipalitySelect(NullSelect): 18 18 """ 19 A Select widget that uses a list of Finnish municipalities as its choices.19 A NullSelect widget that uses a list of Finnish municipalities as its choices. 20 20 """ 21 21 def __init__(self, attrs=None): 22 22 from fi_municipalities import MUNICIPALITY_CHOICES -
django/contrib/localflavor/ar/forms.py
old new 4 4 """ 5 5 6 6 from django.newforms import ValidationError 7 from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES7 from django.newforms.fields import RegexField, CharField, NullSelect, EMPTY_VALUES 8 8 from django.utils.encoding import smart_unicode 9 9 from django.utils.translation import ugettext 10 10 import re 11 11 12 class ARProvinceSelect( Select):12 class ARProvinceSelect(NullSelect): 13 13 """ 14 A Select widget that uses a list of Argentinean provinces/autonomous cities14 A NullSelect widget that uses a list of Argentinean provinces/autonomous cities 15 15 as its choices. 16 16 """ 17 17 def __init__(self, attrs=None): -
django/contrib/localflavor/br/forms.py
old new 4 4 """ 5 5 6 6 from django.newforms import ValidationError 7 from django.newforms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES7 from django.newforms.fields import Field, RegexField, CharField, NullSelect, EMPTY_VALUES 8 8 from django.utils.encoding import smart_unicode 9 9 from django.utils.translation import ugettext as _ 10 10 import re … … 34 34 return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) 35 35 raise ValidationError(_('Phone numbers must be in XX-XXXX-XXXX format.')) 36 36 37 class BRStateSelect( Select):37 class BRStateSelect(NullSelect): 38 38 """ 39 A Select widget that uses a list of Brazilian states/territories39 A NullSelect widget that uses a list of Brazilian states/territories 40 40 as its choices. 41 41 """ 42 42 def __init__(self, attrs=None): … … 47 47 """ 48 48 A choice field that uses a list of Brazilian states as its choices. 49 49 """ 50 widget = Select 51 52 def __init__(self, required=True, widget=None, label=None, 50 def __init__(self, required=True, widget=NullSelect, label=None, 53 51 initial=None, help_text=None): 52 from br_states import STATE_CHOICES 53 if isinstance(widget, type): 54 widget = widget(choices=STATE_CHOICES) 55 else: 56 widget.choices = STATE_CHOICES 54 57 super(BRStateChoiceField, self).__init__(required, widget, label, 55 58 initial, help_text) 56 from br_states import STATE_CHOICES57 self.widget.choices = STATE_CHOICES58 59 59 60 def clean(self, value): 60 61 value = super(BRStateChoiceField, self).clean(value) -
django/contrib/localflavor/au/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.newforms.util import smart_unicode 8 8 from django.utils.translation import ugettext 9 9 import re … … 33 33 return u'%s' % phone_match.group(1) 34 34 raise ValidationError(u'Phone numbers must contain 10 digits.') 35 35 36 class AUStateSelect( Select):36 class AUStateSelect(NullSelect): 37 37 """ 38 A Select widget that uses a list of Australian states/territories as its38 A NullSelect widget that uses a list of Australian states/territories as its 39 39 choices. 40 40 """ 41 41 def __init__(self, attrs=None): -
django/contrib/localflavor/in_/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.encoding import smart_unicode 8 8 from django.utils.translation import gettext 9 9 import re … … 38 38 pass 39 39 raise ValidationError(u'Enter a Indian state or territory.') 40 40 41 class INStateSelect( Select):41 class INStateSelect(NullSelect): 42 42 """ 43 A Select widget that uses a list of Indian states/territories as its43 A NullSelect widget that uses a list of Indian states/territories as its 44 44 choices. 45 45 """ 46 46 def __init__(self, attrs=None): -
django/contrib/localflavor/fr/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.encoding import smart_unicode 8 8 from django.utils.translation import ugettext 9 9 import re … … 34 34 return u'%s %s %s %s %s' % (value[0:2], value[2:4], value[4:6], value[6:8], value[8:10]) 35 35 raise ValidationError(u'Phone numbers must be in 0X XX XX XX XX format.') 36 36 37 class FRDepartmentSelect( Select):37 class FRDepartmentSelect(NullSelect): 38 38 """ 39 A Select widget that uses a list of FR departments as its choices.39 A NullSelect widget that uses a list of FR departments as its choices. 40 40 """ 41 41 def __init__(self, attrs=None): 42 42 from fr_department import DEPARTMENT_ASCII_CHOICES -
django/contrib/localflavor/jp/forms.py
old new 5 5 from django.core import validators 6 6 from django.newforms import ValidationError 7 7 from django.utils.translation import ugettext 8 from django.newforms.fields import RegexField, Select8 from django.newforms.fields import RegexField, NullSelect 9 9 10 10 import re 11 11 … … 29 29 v = super(JPPostalCodeField, self).clean(value) 30 30 return v.replace('-', '') 31 31 32 class JPPrefectureSelect( Select):32 class JPPrefectureSelect(NullSelect): 33 33 """ 34 A Select widget that uses a list of Japanese prefectures as its choices.34 A NullSelect widget that uses a list of Japanese prefectures as its choices. 35 35 """ 36 36 def __init__(self, attrs=None): 37 37 from jp_prefectures import JP_PREFECTURES -
django/contrib/localflavor/nl/forms.py
old new 5 5 import re 6 6 7 7 from django.newforms import ValidationError 8 from django.newforms.fields import Field, Select, EMPTY_VALUES8 from django.newforms.fields import Field, NullSelect, EMPTY_VALUES 9 9 from django.utils.translation import ugettext as _ 10 10 from django.utils.encoding import smart_unicode 11 11 … … 32 32 33 33 return u'%s %s' % (value[:4], value[4:]) 34 34 35 class NLProvinceSelect( Select):35 class NLProvinceSelect(NullSelect): 36 36 """ 37 A Select widget that uses a list of provinces of the Netherlands as its37 A NullSelect widget that uses a list of provinces of the Netherlands as its 38 38 choices. 39 39 """ 40 40 def __init__(self, attrs=None): -
django/contrib/localflavor/is_/forms.py
old new 4 4 5 5 from django.newforms import ValidationError 6 6 from django.newforms.fields import RegexField, EMPTY_VALUES 7 from django.newforms.widgets import Select7 from django.newforms.widgets import NullSelect 8 8 from django.utils.translation import ugettext 9 9 from django.utils.encoding import smart_unicode 10 10 … … 68 68 69 69 return value.replace('-', '').replace(' ', '') 70 70 71 class ISPostalCodeSelect( Select):71 class ISPostalCodeSelect(NullSelect): 72 72 """ 73 A Select widget that uses a list of Icelandic postal codes as its choices.73 A NullSelect widget that uses a list of Icelandic postal codes as its choices. 74 74 """ 75 75 def __init__(self, attrs=None): 76 76 from is_postalcodes import IS_POSTALCODES -
django/contrib/localflavor/pl/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Select, RegexField6 from django.newforms.fields import NullSelect, RegexField 7 7 from django.utils.translation import ugettext as _ 8 8 9 class PLVoivodeshipSelect( Select):9 class PLVoivodeshipSelect(NullSelect): 10 10 """ 11 11 A select widget with list of Polish voivodeships (administrative provinces) 12 12 as choices. … … 15 15 from pl_voivodeships import VOIVODESHIP_CHOICES 16 16 super(PLVoivodeshipSelect, self).__init__(attrs, choices=VOIVODESHIP_CHOICES) 17 17 18 class PLAdministrativeUnitSelect( Select):18 class PLAdministrativeUnitSelect(NullSelect): 19 19 """ 20 20 A select widget with list of Polish administrative units as choices. 21 21 """ -
django/contrib/localflavor/no/forms.py
old new 4 4 5 5 import re, datetime 6 6 from django.newforms import ValidationError 7 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES7 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 8 8 from django.utils.translation import ugettext 9 9 10 10 class NOZipCodeField(RegexField): … … 14 14 error_message=ugettext('Enter a zip code in the format XXXX.'), 15 15 *args, **kwargs) 16 16 17 class NOMunicipalitySelect( Select):17 class NOMunicipalitySelect(NullSelect): 18 18 """ 19 A Select widget that uses a list of Norwegian municipalities (fylker)19 A NullSelect widget that uses a list of Norwegian municipalities (fylker) 20 20 as its choices. 21 21 """ 22 22 def __init__(self, attrs=None): -
django/contrib/localflavor/it/forms.py
old new 3 3 """ 4 4 5 5 from django.newforms import ValidationError 6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES6 from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 7 7 from django.utils.translation import ugettext 8 8 from django.utils.encoding import smart_unicode 9 9 from django.contrib.localflavor.it.util import ssn_check_digit, vat_number_check_digit … … 16 16 error_message=ugettext('Enter a valid zip code.'), 17 17 *args, **kwargs) 18 18 19 class ITRegionSelect( Select):19 class ITRegionSelect(NullSelect): 20 20 """ 21 A Select widget that uses a list of IT regions as its choices.21 A NullSelect widget that uses a list of IT regions as its choices. 22 22 """ 23 23 def __init__(self, attrs=None): 24 24 from it_region import REGION_CHOICES 25 25 super(ITRegionSelect, self).__init__(attrs, choices=REGION_CHOICES) 26 26 27 class ITProvinceSelect( Select):27 class ITProvinceSelect(NullSelect): 28 28 """ 29 A Select widget that uses a list of IT regions as its choices.29 A NullSelect widget that uses a list of IT regions as its choices. 30 30 """ 31 31 def __init__(self, attrs=None): 32 32 from it_province import PROVINCE_CHOICES -
django/contrib/localflavor/sk/forms.py
old new 2 2 Slovak-specific form helpers 3 3 """ 4 4 5 from django.newforms.fields import Select, RegexField5 from django.newforms.fields import NullSelect, RegexField 6 6 from django.utils.translation import ugettext 7 7 8 class SKRegionSelect( Select):8 class SKRegionSelect(NullSelect): 9 9 """ 10 10 A select widget widget with list of Slovak regions as choices. 11 11 """ … … 13 13 from sk_regions import REGION_CHOICES 14 14 super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES) 15 15 16 class SKDistrictSelect( Select):16 class SKDistrictSelect(NullSelect): 17 17 """ 18 18 A select widget with list of Slovak districts as choices. 19 19 """ -
django/newforms/models.py
old new 10 10 from util import ValidationError 11 11 from forms import BaseForm, SortedDictFromList 12 12 from fields import Field, ChoiceField 13 from widgets import Select, SelectMultiple, MultipleHiddenInput 13 from widgets import NullSelect, SelectMultiple, MultipleHiddenInput 14 from itertools import chain 14 15 15 16 __all__ = ( 16 17 'save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields', … … 123 124 return type('FormForFields', (BaseForm,), {'base_fields': fields}) 124 125 125 126 class QuerySetIterator(object): 126 def __init__(self, queryset, empty_label, cache_choices):127 self. queryset, self.empty_label, self.cache_choices = queryset, empty_label, cache_choices127 def __init__(self, base, queryset, cache_choices): 128 self.base, self.queryset, self.cache_choices = base, queryset, cache_choices 128 129 129 130 def __iter__(self): 130 if self.empty_label is not None:131 yield (u"", self.empty_label)131 for obj in self.base: 132 yield obj 132 133 for obj in self.queryset: 133 134 yield (obj._get_pk_val(), smart_unicode(obj)) 134 135 # Clear the QuerySet cache if required. … … 139 140 "A ChoiceField whose choices are a model QuerySet." 140 141 # This class is a subclass of ChoiceField for purity, but it doesn't 141 142 # actually use any of ChoiceField's implementation. 142 def __init__(self, queryset, empty_label=u"---------",cache_choices=False,143 required=True, widget= Select, label=None, initial=None, help_text=None):143 def __init__(self, queryset, cache_choices=False, 144 required=True, widget=NullSelect, label=None, initial=None, help_text=None): 144 145 self.queryset = queryset 145 self.empty_label = empty_label146 146 self.cache_choices = cache_choices 147 147 # Call Field instead of ChoiceField __init__() because we don't need 148 148 # ChoiceField.__init__(). 149 149 Field.__init__(self, required, widget, label, initial, help_text) 150 # we need to keep the choices list as a lazy evaluation. 151 self.base = self.widget.choices 150 152 self.widget.choices = self.choices 151 153 152 154 def _get_choices(self): … … 160 162 # *each* time _get_choices() is called (and, thus, each time 161 163 # self.choices is accessed) so that we can ensure the QuerySet has not 162 164 # been consumed. 163 return QuerySetIterator(self. queryset, self.empty_label, self.cache_choices)165 return QuerySetIterator(self.base, self.queryset, self.cache_choices) 164 166 165 167 def _set_choices(self, value): 166 168 # This method is copied from ChoiceField._set_choices(). It's necessary … … 185 187 hidden_widget = MultipleHiddenInput 186 188 def __init__(self, queryset, cache_choices=False, required=True, 187 189 widget=SelectMultiple, label=None, initial=None, help_text=None): 188 super(ModelMultipleChoiceField, self).__init__(queryset, None,cache_choices,190 super(ModelMultipleChoiceField, self).__init__(queryset, cache_choices, 189 191 required, widget, label, initial, help_text) 190 192 191 193 def clean(self, value): -
django/newforms/fields.py
old new 11 11 from django.utils.encoding import StrAndUnicode, smart_unicode 12 12 13 13 from util import ErrorList, ValidationError 14 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, Null BooleanSelect, SelectMultiple14 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullSelect, NullBooleanSelect, SelectMultiple 15 15 16 16 try: 17 17 from decimal import Decimal, DecimalException -
django/newforms/widgets.py
old new 18 18 'Widget', 'TextInput', 'PasswordInput', 19 19 'HiddenInput', 'MultipleHiddenInput', 20 20 'FileInput', 'Textarea', 'CheckboxInput', 21 'Select', 'Null BooleanSelect', 'SelectMultiple', 'RadioSelect',21 'Select', 'NullSelect', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect', 22 22 'CheckboxSelectMultiple', 'MultiWidget', 'SplitDateTimeWidget', 23 23 ) 24 24 … … 180 180 output.append(u'</select>') 181 181 return u'\n'.join(output) 182 182 183 class NullSelect(Select): 184 def __init__(self, attrs=None, choices=(), empty_label=u"---------"): 185 empty_choice = () 186 if empty_label is not None: 187 empty_choice = ((u'', empty_label),) 188 super(NullSelect, self).__init__(attrs, chain(empty_choice, choices)) 189 183 190 class NullBooleanSelect(Select): 184 191 """ 185 192 A Select Widget intended to be used with NullBooleanField. -
tests/regressiontests/forms/localflavor.py
old new 179 179 180 180 # USStateSelect ############################################################### 181 181 182 USStateSelect is a Select widget that uses a list of U.S. states/territories182 USStateSelect is a NullSelect widget that uses a list of U.S. states/territories 183 183 as its choices. 184 184 >>> from django.contrib.localflavor.us.forms import USStateSelect 185 185 >>> w = USStateSelect() 186 186 >>> print w.render('state', 'IL') 187 187 <select name="state"> 188 <option value="">---------</option> 188 189 <option value="AL">Alabama</option> 189 190 <option value="AK">Alaska</option> 190 191 <option value="AS">American Samoa</option> … … 406 407 407 408 # FRDepartmentSelect ############################################################### 408 409 409 FRDepartmentSelect is a Select widget that uses a list of french departments410 FRDepartmentSelect is a NullSelect widget that uses a list of french departments 410 411 including DOM TOM 411 412 >>> from django.contrib.localflavor.fr.forms import FRDepartmentSelect 412 413 >>> w = FRDepartmentSelect() 413 414 >>> print w.render('dep', 'Paris') 414 415 <select name="dep"> 416 <option value="">---------</option> 415 417 <option value="01">01 - Ain</option> 416 418 <option value="02">02 - Aisne</option> 417 419 <option value="03">03 - Allier</option> … … 570 572 571 573 # JPPrefectureSelect ############################################################### 572 574 573 A Select widget that uses a list of Japanese prefectures as its choices.575 A NullSelect widget that uses a list of Japanese prefectures as its choices. 574 576 >>> from django.contrib.localflavor.jp.forms import JPPrefectureSelect 575 577 >>> w = JPPrefectureSelect() 576 578 >>> print w.render('prefecture', 'kanagawa') 577 579 <select name="prefecture"> 580 <option value="">---------</option> 578 581 <option value="hokkaido">Hokkaido</option> 579 582 <option value="aomori">Aomori</option> 580 583 <option value="iwate">Iwate</option> … … 640 643 >>> from django.contrib.localflavor.it.forms import ITRegionSelect 641 644 >>> w = ITRegionSelect() 642 645 >>> w.render('regions', 'PMN') 643 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>'646 u'<select name="regions">\n<option value="">---------</option>\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>' 644 647 645 648 # ITSocialSecurityNumberField ################################################# 646 649 … … 728 731 729 732 # FIMunicipalitySelect ############################################################### 730 733 731 A Select widget that uses a list of Finnish municipalities as its choices.734 A NullSelect widget that uses a list of Finnish municipalities as its choices. 732 735 >>> from django.contrib.localflavor.fi.forms import FIMunicipalitySelect 733 736 >>> w = FIMunicipalitySelect() 734 737 >>> unicode(w.render('municipalities', 'turku')) 735 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>'738 u'<select name="municipalities">\n<option value="">---------</option>\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
