Django

Code

Ticket #4092: 4092_6248_nullselect.diff

File 4092_6248_nullselect.diff, 139.7 kB (added by dougn, 1 year ago)

New NullSelect? widget which is used as the base for all the localflavor select widgets, and replaces the ModelField? default widget,.

  • django/contrib/localflavor/ca/forms.py

    old new  
    33"""  
    44  
    55from django.newforms import ValidationError  
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES  
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES  
    77from django.newforms.util import smart_unicode  
    88from django.utils.translation import gettext, ugettext 
    99import re  
     
    5555                pass 
    5656        raise ValidationError(u'Enter a Canadian province or territory.') 
    5757  
    58 class CAProvinceSelect(Select):  
     58class CAProvinceSelect(NullSelect):  
    5959    """  
    60     A Select widget that uses a list of Canadian provinces and  
     60    A NullSelect widget that uses a list of Canadian provinces and  
    6161    territories as its choices.  
    6262    """  
    6363    def __init__(self, attrs=None):  
  • django/contrib/localflavor/us/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.encoding import smart_unicode 
    88from django.utils.translation import ugettext 
    99import re 
     
    9090                pass 
    9191        raise ValidationError(u'Enter a U.S. state or territory.') 
    9292 
    93 class USStateSelect(Select): 
     93class USStateSelect(NullSelect): 
    9494    """ 
    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. 
    9696    """ 
    9797    def __init__(self, attrs=None): 
    9898        from us_states import STATE_CHOICES 
  • django/contrib/localflavor/de/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.translation import ugettext 
    88import re 
    99 
     
    1616            error_message=ugettext('Enter a zip code in the format XXXXX.'), 
    1717                    *args, **kwargs) 
    1818 
    19 class DEStateSelect(Select): 
     19class DEStateSelect(NullSelect): 
    2020    """ 
    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. 
    2222    """ 
    2323    def __init__(self, attrs=None): 
    2424        from de_states import STATE_CHOICES 
  • django/contrib/localflavor/ch/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.encoding import smart_unicode 
    88from django.utils.translation import ugettext 
    99import re 
     
    3535            return u'%s %s %s %s' % (value[0:3], value[3:6], value[6:8], value[8:10]) 
    3636        raise ValidationError('Phone numbers must be in 0XX XXX XX XX format.') 
    3737 
    38 class CHStateSelect(Select): 
     38class CHStateSelect(NullSelect): 
    3939    """ 
    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. 
    4141    """ 
    4242    def __init__(self, attrs=None): 
    4343        from ch_states import STATE_CHOICES # relative import 
  • django/contrib/localflavor/cl/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.translation import ugettext 
    88from django.utils.encoding import smart_unicode 
    99 
    1010 
    11 class CLRegionSelect(Select): 
     11class CLRegionSelect(NullSelect): 
    1212    """ 
    13     A Select widget that uses a list of Chilean Regions (Regiones) 
     13    A NullSelect widget that uses a list of Chilean Regions (Regiones) 
    1414    as its choices. 
    1515    """ 
    1616    def __init__(self, attrs=None): 
  • django/contrib/localflavor/fi/forms.py

    old new  
    44 
    55import re 
    66from django.newforms import ValidationError 
    7 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     7from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    88from django.utils.translation import ugettext 
    99 
    1010class FIZipCodeField(RegexField): 
     
    1414            error_message=ugettext('Enter a zip code in the format XXXXX.'), 
    1515                    *args, **kwargs) 
    1616 
    17 class FIMunicipalitySelect(Select): 
     17class FIMunicipalitySelect(NullSelect): 
    1818    """ 
    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. 
    2020    """ 
    2121    def __init__(self, attrs=None): 
    2222        from fi_municipalities import MUNICIPALITY_CHOICES 
  • django/contrib/localflavor/ar/forms.py

    old new  
    44""" 
    55 
    66from django.newforms import ValidationError 
    7 from django.newforms.fields import RegexField, CharField, Select, EMPTY_VALUES 
     7from django.newforms.fields import RegexField, CharField, NullSelect, EMPTY_VALUES 
    88from django.utils.encoding import smart_unicode 
    99from django.utils.translation import ugettext 
    1010import re 
    1111 
    12 class ARProvinceSelect(Select): 
     12class ARProvinceSelect(NullSelect): 
    1313    """ 
    14     A Select widget that uses a list of Argentinean provinces/autonomous cities 
     14    A NullSelect widget that uses a list of Argentinean provinces/autonomous cities 
    1515    as its choices. 
    1616    """ 
    1717    def __init__(self, attrs=None): 
  • django/contrib/localflavor/br/forms.py

    old new  
    44""" 
    55 
    66from django.newforms import ValidationError 
    7 from django.newforms.fields import Field, RegexField, CharField, Select, EMPTY_VALUES 
     7from django.newforms.fields import Field, RegexField, CharField, NullSelect, EMPTY_VALUES 
    88from django.utils.encoding import smart_unicode 
    99from django.utils.translation import ugettext as _ 
    1010import re 
     
    3434            return u'%s-%s-%s' % (m.group(1), m.group(2), m.group(3)) 
    3535        raise ValidationError(_('Phone numbers must be in XX-XXXX-XXXX format.')) 
    3636 
    37 class BRStateSelect(Select): 
     37class BRStateSelect(NullSelect): 
    3838    """ 
    39     A Select widget that uses a list of Brazilian states/territories 
     39    A NullSelect widget that uses a list of Brazilian states/territories 
    4040    as its choices. 
    4141    """ 
    4242    def __init__(self, attrs=None): 
     
    4747    """ 
    4848    A choice field that uses a list of Brazilian states as its choices. 
    4949    """ 
    50     widget = Select 
    51  
    52     def __init__(self, required=True, widget=None, label=None, 
     50    def __init__(self, required=True, widget=NullSelect, label=None, 
    5351                 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 
    5457        super(BRStateChoiceField, self).__init__(required, widget, label, 
    5558                                                 initial, help_text) 
    56         from br_states import STATE_CHOICES 
    57         self.widget.choices = STATE_CHOICES 
    5859 
    5960    def clean(self, value): 
    6061        value = super(BRStateChoiceField, self).clean(value) 
  • django/contrib/localflavor/au/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.newforms.util import smart_unicode 
    88from django.utils.translation import ugettext 
    99import re 
     
    3333            return u'%s' % phone_match.group(1) 
    3434        raise ValidationError(u'Phone numbers must contain 10 digits.') 
    3535 
    36 class AUStateSelect(Select): 
     36class AUStateSelect(NullSelect): 
    3737    """ 
    38     A Select widget that uses a list of Australian states/territories as its 
     38    A NullSelect widget that uses a list of Australian states/territories as its 
    3939    choices. 
    4040    """ 
    4141    def __init__(self, attrs=None): 
  • django/contrib/localflavor/in_/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.encoding import smart_unicode 
    88from django.utils.translation import gettext 
    99import re 
     
    3838                pass 
    3939        raise ValidationError(u'Enter a Indian state or territory.') 
    4040 
    41 class INStateSelect(Select): 
     41class INStateSelect(NullSelect): 
    4242    """ 
    43     A Select widget that uses a list of Indian states/territories as its 
     43    A NullSelect widget that uses a list of Indian states/territories as its 
    4444    choices. 
    4545    """ 
    4646    def __init__(self, attrs=None): 
  • django/contrib/localflavor/fr/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.encoding import smart_unicode 
    88from django.utils.translation import ugettext 
    99import re 
     
    3434            return u'%s %s %s %s %s' % (value[0:2], value[2:4], value[4:6], value[6:8], value[8:10]) 
    3535        raise ValidationError(u'Phone numbers must be in 0X XX XX XX XX format.') 
    3636 
    37 class FRDepartmentSelect(Select): 
     37class FRDepartmentSelect(NullSelect): 
    3838    """ 
    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. 
    4040    """ 
    4141    def __init__(self, attrs=None): 
    4242        from fr_department import DEPARTMENT_ASCII_CHOICES 
  • django/contrib/localflavor/jp/forms.py

    old new  
    55from django.core import validators 
    66from django.newforms import ValidationError 
    77from django.utils.translation import ugettext 
    8 from django.newforms.fields import RegexField, Select 
     8from django.newforms.fields import RegexField, NullSelect 
    99 
    1010import re 
    1111 
     
    2929        v = super(JPPostalCodeField, self).clean(value) 
    3030        return v.replace('-', '') 
    3131 
    32 class JPPrefectureSelect(Select): 
     32class JPPrefectureSelect(NullSelect): 
    3333    """ 
    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. 
    3535    """ 
    3636    def __init__(self, attrs=None): 
    3737        from jp_prefectures import JP_PREFECTURES 
  • django/contrib/localflavor/nl/forms.py

    old new  
    55import re 
    66 
    77from django.newforms import ValidationError 
    8 from django.newforms.fields import Field, Select, EMPTY_VALUES 
     8from django.newforms.fields import Field, NullSelect, EMPTY_VALUES 
    99from django.utils.translation import ugettext as _ 
    1010from django.utils.encoding import smart_unicode 
    1111 
     
    3232         
    3333        return u'%s %s' % (value[:4], value[4:]) 
    3434 
    35 class NLProvinceSelect(Select): 
     35class NLProvinceSelect(NullSelect): 
    3636    """ 
    37     A Select widget that uses a list of provinces of the Netherlands as its  
     37    A NullSelect widget that uses a list of provinces of the Netherlands as its  
    3838    choices. 
    3939    """ 
    4040    def __init__(self, attrs=None): 
  • django/contrib/localflavor/is_/forms.py

    old new  
    44 
    55from django.newforms import ValidationError 
    66from django.newforms.fields import RegexField, EMPTY_VALUES 
    7 from django.newforms.widgets import Select 
     7from django.newforms.widgets import NullSelect 
    88from django.utils.translation import ugettext 
    99from django.utils.encoding import smart_unicode 
    1010 
     
    6868 
    6969        return value.replace('-', '').replace(' ', '') 
    7070 
    71 class ISPostalCodeSelect(Select): 
     71class ISPostalCodeSelect(NullSelect): 
    7272    """ 
    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. 
    7474    """ 
    7575    def __init__(self, attrs=None): 
    7676        from is_postalcodes import IS_POSTALCODES 
  • django/contrib/localflavor/pl/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Select, RegexField 
     6from django.newforms.fields import NullSelect, RegexField 
    77from django.utils.translation import ugettext as _ 
    88 
    9 class PLVoivodeshipSelect(Select): 
     9class PLVoivodeshipSelect(NullSelect): 
    1010    """ 
    1111    A select widget with list of Polish voivodeships (administrative provinces) 
    1212    as choices. 
     
    1515        from pl_voivodeships import VOIVODESHIP_CHOICES 
    1616        super(PLVoivodeshipSelect, self).__init__(attrs, choices=VOIVODESHIP_CHOICES) 
    1717 
    18 class PLAdministrativeUnitSelect(Select): 
     18class PLAdministrativeUnitSelect(NullSelect): 
    1919    """ 
    2020    A select widget with list of Polish administrative units as choices. 
    2121    """ 
  • django/contrib/localflavor/no/forms.py

    old new  
    44 
    55import re, datetime 
    66from django.newforms import ValidationError 
    7 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     7from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    88from django.utils.translation import ugettext 
    99 
    1010class NOZipCodeField(RegexField): 
     
    1414            error_message=ugettext('Enter a zip code in the format XXXX.'), 
    1515                    *args, **kwargs) 
    1616 
    17 class NOMunicipalitySelect(Select): 
     17class NOMunicipalitySelect(NullSelect): 
    1818    """ 
    19     A Select widget that uses a list of Norwegian municipalities (fylker) 
     19    A NullSelect widget that uses a list of Norwegian municipalities (fylker) 
    2020    as its choices. 
    2121    """ 
    2222    def __init__(self, attrs=None): 
  • django/contrib/localflavor/it/forms.py

    old new  
    33""" 
    44 
    55from django.newforms import ValidationError 
    6 from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES 
     6from django.newforms.fields import Field, RegexField, NullSelect, EMPTY_VALUES 
    77from django.utils.translation import ugettext 
    88from django.utils.encoding import smart_unicode 
    99from django.contrib.localflavor.it.util import ssn_check_digit, vat_number_check_digit 
     
    1616        error_message=ugettext('Enter a valid zip code.'), 
    1717                *args, **kwargs) 
    1818 
    19 class ITRegionSelect(Select): 
     19class ITRegionSelect(NullSelect): 
    2020    """ 
    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. 
    2222    """ 
    2323    def __init__(self, attrs=None): 
    2424        from it_region import REGION_CHOICES 
    2525        super(ITRegionSelect, self).__init__(attrs, choices=REGION_CHOICES) 
    2626 
    27 class ITProvinceSelect(Select): 
     27class ITProvinceSelect(NullSelect): 
    2828    """ 
    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. 
    3030    """ 
    3131    def __init__(self, attrs=None): 
    3232        from it_province import PROVINCE_CHOICES 
  • django/contrib/localflavor/sk/forms.py

    old new  
    22Slovak-specific form helpers 
    33""" 
    44 
    5 from django.newforms.fields import Select, RegexField 
     5from django.newforms.fields import NullSelect, RegexField 
    66from django.utils.translation import ugettext 
    77 
    8 class SKRegionSelect(Select): 
     8class SKRegionSelect(NullSelect): 
    99    """ 
    1010    A select widget widget with list of Slovak regions as choices. 
    1111    """ 
     
    1313        from sk_regions import REGION_CHOICES 
    1414        super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES) 
    1515 
    16 class SKDistrictSelect(Select): 
     16class SKDistrictSelect(NullSelect): 
    1717    """ 
    1818    A select widget with list of Slovak districts as choices. 
    1919    """ 
  • django/newforms/models.py

    old new  
    1010from util import ValidationError 
    1111from forms import BaseForm, SortedDictFromList 
    1212from fields import Field, ChoiceField 
    13 from widgets import Select, SelectMultiple, MultipleHiddenInput 
     13from widgets import NullSelect, SelectMultiple, MultipleHiddenInput 
     14from itertools import chain 
    1415 
    1516__all__ = ( 
    1617    'save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields', 
     
    123124    return type('FormForFields', (BaseForm,), {'base_fields': fields}) 
    124125 
    125126class QuerySetIterator(object): 
    126     def __init__(self, queryset, empty_label, cache_choices): 
    127         self.queryset, self.empty_label, self.cache_choices = queryset, empty_label, cache_choices 
     127    def __init__(self, base, queryset, cache_choices): 
     128        self.base, self.queryset, self.cache_choices = base, queryset, cache_choices 
    128129 
    129130    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 
    132133        for obj in self.queryset: 
    133134            yield (obj._get_pk_val(), smart_unicode(obj)) 
    134135        # Clear the QuerySet cache if required. 
     
    139140    "A ChoiceField whose choices are a model QuerySet." 
    140141    # This class is a subclass of ChoiceField for purity, but it doesn't 
    141142    # 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): 
    144145        self.queryset = queryset 
    145         self.empty_label = empty_label 
    146146        self.cache_choices = cache_choices 
    147147        # Call Field instead of ChoiceField __init__() because we don't need 
    148148        # ChoiceField.__init__(). 
    149149        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 
    150152        self.widget.choices = self.choices 
    151153 
    152154    def _get_choices(self): 
     
    160162        # *each* time _get_choices() is called (and, thus, each time 
    161163        # self.choices is accessed) so that we can ensure the QuerySet has not 
    162164        # been consumed. 
    163         return QuerySetIterator(self.queryset, self.empty_label, self.cache_choices) 
     165        return QuerySetIterator(self.base, self.queryset, self.cache_choices) 
    164166 
    165167    def _set_choices(self, value): 
    166168        # This method is copied from ChoiceField._set_choices(). It's necessary 
     
    185187    hidden_widget = MultipleHiddenInput 
    186188    def __init__(self, queryset, cache_choices=False, required=True, 
    187189            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, 
    189191            required, widget, label, initial, help_text) 
    190192 
    191193    def clean(self, value): 
  • django/newforms/fields.py

    old new  
    1111from django.utils.encoding import StrAndUnicode, smart_unicode 
    1212 
    1313from util import ErrorList, ValidationError 
    14 from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullBooleanSelect, SelectMultiple 
     14from widgets import TextInput, PasswordInput, HiddenInput, MultipleHiddenInput, FileInput, CheckboxInput, Select, NullSelect, NullBooleanSelect, SelectMultiple 
    1515 
    1616try: 
    1717    from decimal import Decimal, DecimalException 
  • django/newforms/widgets.py

    old new  
    1818    'Widget', 'TextInput', 'PasswordInput', 
    1919    'HiddenInput', 'MultipleHiddenInput', 
    2020    'FileInput', 'Textarea', 'CheckboxInput', 
    21     'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect', 
     21    'Select', 'NullSelect', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect', 
    2222    'CheckboxSelectMultiple', 'MultiWidget', 'SplitDateTimeWidget', 
    2323) 
    2424 
     
    180180        output.append(u'</select>') 
    181181        return u'\n'.join(output) 
    182182 
     183class 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         
    183190class NullBooleanSelect(Select): 
    184191    """ 
    185192    A Select Widget intended to be used with NullBooleanField. 
  • tests/regressiontests/forms/localflavor.py

    old new  
    179179 
    180180# USStateSelect ############################################################### 
    181181 
    182 USStateSelect is a Select widget that uses a list of U.S. states/territories 
     182USStateSelect is a NullSelect widget that uses a list of U.S. states/territories 
    183183as its choices. 
    184184>>> from django.contrib.localflavor.us.forms import USStateSelect 
    185185>>> w = USStateSelect() 
    186186>>> print w.render('state', 'IL') 
    187187<select name="state"> 
     188<option value="">---------</option> 
    188189<option value="AL">Alabama</option> 
    189190<option value="AK">Alaska</option> 
    190191<option value="AS">American Samoa</option> 
     
    406407 
    407408# FRDepartmentSelect ############################################################### 
    408409 
    409 FRDepartmentSelect is a Select widget that uses a list of french departments 
     410FRDepartmentSelect is a NullSelect widget that uses a list of french departments 
    410411including DOM TOM 
    411412>>> from django.contrib.localflavor.fr.forms import FRDepartmentSelect 
    412413>>> w = FRDepartmentSelect() 
    413414>>> print w.render('dep', 'Paris') 
    414415<select name="dep"> 
     416<option value="">---------</option> 
    415417<option value="01">01 - Ain</option> 
    416418<option value="02">02 - Aisne</option> 
    417419<option value="03">03 - Allier</option> 
     
    570572 
    571573# JPPrefectureSelect ############################################################### 
    572574 
    573 A Select widget that uses a list of Japanese prefectures as its choices. 
     575A NullSelect widget that uses a list of Japanese prefectures as its choices. 
    574576>>> from django.contrib.localflavor.jp.forms import JPPrefectureSelect 
    575577>>> w = JPPrefectureSelect() 
    576578>>> print w.render('prefecture', 'kanagawa') 
    577579<select name="prefecture"> 
     580<option value="">---------</option> 
    578581<option value="hokkaido">Hokkaido</option> 
    579582<option value="aomori">Aomori</option> 
    580583<option value="iwate">Iwate</option> 
     
    640643>>> from django.contrib.localflavor.it.forms import ITRegionSelect 
    641644>>> w = ITRegionSelect() 
    642645>>> 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>' 
     646u'<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>' 
    644647 
    645648# ITSocialSecurityNumberField ################################################# 
    646649 
     
    728731 
    729732# FIMunicipalitySelect ############################################################### 
    730733 
    731 A Select widget that uses a list of Finnish municipalities as its choices. 
     734A NullSelect widget that uses a list of Finnish municipalities as its choices. 
    732735>>> from django.contrib.localflavor.fi.forms import FIMunicipalitySelect 
    733736>>> w = FIMunicipalitySelect() 
    734737>>> 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>' 
     738u'<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