Ticket #4092: 4093_6352_nullselect.diff
| File 4093_6352_nullselect.diff, 143.4 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, MultipleHiddenInput13 from widgets import NullSelect, SelectMultiple, MultipleHiddenInput 14 14 15 15 __all__ = ( 16 16 'save_instance', 'form_for_model', 'form_for_instance', 'form_for_fields', … … 123 123 return type('FormForFields', (BaseForm,), {'base_fields': fields}) 124 124 125 125 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_choices126 def __init__(self, base, queryset, cache_choices): 127 self.base, self.queryset, self.cache_choices = base, queryset, cache_choices 128 128 129 129 def __iter__(self): 130 if self.empty_label is not None:131 yield (u"", self.empty_label)130 for obj in self.base: 131 yield obj 132 132 for obj in self.queryset: 133 133 yield (obj._get_pk_val(), smart_unicode(obj)) 134 134 # Clear the QuerySet cache if required. … … 139 139 "A ChoiceField whose choices are a model QuerySet." 140 140 # This class is a subclass of ChoiceField for purity, but it doesn't 141 141 # 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):142 def __init__(self, queryset, cache_choices=False, 143 required=True, widget=NullSelect, label=None, initial=None, help_text=None): 144 144 self.queryset = queryset 145 self.empty_label = empty_label146 145 self.cache_choices = cache_choices 147 146 # Call Field instead of ChoiceField __init__() because we don't need 148 147 # ChoiceField.__init__(). 149 148 Field.__init__(self, required, widget, label, initial, help_text) 149 # we need to keep the choices list as a lazy evaluation. 150 self.base = self.widget.choices 150 151 self.widget.choices = self.choices 151 152 152 153 def _get_choices(self): … … 160 161 # *each* time _get_choices() is called (and, thus, each time 161 162 # self.choices is accessed) so that we can ensure the QuerySet has not 162 163 # been consumed. 163 return QuerySetIterator(self. queryset, self.empty_label, self.cache_choices)164 return QuerySetIterator(self.base, self.queryset, self.cache_choices) 164 165 165 166 def _set_choices(self, value): 166 167 # This method is copied from ChoiceField._set_choices(). It's necessary … … 185 186 hidden_widget = MultipleHiddenInput 186 187 def __init__(self, queryset, cache_choices=False, required=True, 187 188 widget=SelectMultiple, label=None, initial=None, help_text=None): 188 super(ModelMultipleChoiceField, self).__init__(queryset, None,cache_choices,189 super(ModelMultipleChoiceField, self).__init__(queryset, cache_choices, 189 190 required, widget, label, initial, help_text) 190 191 191 192 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 … … 182 182 output.append(u'</select>') 183 183 return u'\n'.join(output) 184 184 185 class NullSelect(Select): 186 def __init__(self, attrs=None, choices=(), empty_label=u"---------"): 187 self.empty_label = empty_label 188 super(NullSelect, self).__init__(attrs, choices) 189 190 def render(self, name, value, attrs=None, choices=(), **kwdargs): 191 empty_choice = () 192 # kwdargs is needed because it is the only way to determine if an 193 # override is provided or not. 194 if 'empty_label' in kwdargs: 195 if kwdargs['empty_label'] is not None: 196 empty_choice = ((u'', kwdargs['empty_label']),) 197 elif self.empty_label is not None: 198 empty_choice = ((u'', self.empty_label),) 199 base_choices = self.choices 200 self.choices = chain(empty_choice, base_choices) 201 result = super(NullSelect, self).render(name, value, attrs, choices) 202 self.choices = base_choices 203 return result 204 205 185 206 class NullBooleanSelect(Select): 186 207 """ 187 208 A Select Widget intended to be used with NullBooleanField. -
tests/regressiontests/forms/tests.py
old new 396 396 <option value="4">4</option> 397 397 </select> 398 398 399 # NullSelect Widget ########################################################### 400 401 >>> w = NullSelect() 402 >>> print w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))) 403 <select name="beatle"> 404 <option value="">---------</option> 405 <option value="J" selected="selected">John</option> 406 <option value="P">Paul</option> 407 <option value="G">George</option> 408 <option value="R">Ringo</option> 409 </select> 410 411 If the value is None, the empty option is selected: 412 >>> print w.render('beatle', None, choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))) 413 <select name="beatle"> 414 <option value="" selected="selected">---------</option> 415 <option value="J">John</option> 416 <option value="P">Paul</option> 417 <option value="G">George</option> 418 <option value="R">Ringo</option> 419 </select> 420 421 Override the default empty_label: 422 >>> w = NullSelect(choices=(('F', 'Fuji'), ('G', 'Granny Smith'), ('M', 'McIntosh')), empty_label="I don't like apples") 423 >>> print w.render('apples', None) 424 <select name="apples"> 425 <option value="" selected="selected">I don't like apples</option> 426 <option value="F">Fuji</option> 427 <option value="G">Granny Smith</option> 428 <option value="M">McIntosh</option> 429 </select> 430 431 Override the empty_label override: 432 >> print w.render('apples', 'R', choices=(('R', 'Red Delicious'), ('C', 'Cameo')), empty_label='No preference') 433 <select name="apples"> 434 <option value="">No preference</option> 435 <option value="F">Fuji</option> 436 <option value="G">Granny Smith</option> 437 <option value="M">McIntosh</option> 438 <option value="R" selected="selected">Red Delicious</option> 439 <option value="C">Cameo</option> 440 </select> 441 442 >> print w.render('apples', None, empty_label=None) 443 <select name="apples"> 444 <option value="F">Fuji</option> 445 <option value="G">Granny Smith</option> 446 <option value="M">McIntosh</option> 447 </select> 448 449 >>> w = NullSelect(empty_label=None) 450 >>> print w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))) 451 <select name="beatle"> 452 <option value="J" selected="selected">John</option> 453 <option value="P">Paul</option> 454 <option value="G">George</option> 455 <option value="R">Ringo</option> 456 </select> 457 458 >>> print w.render('beatle', 'J', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')), empty_label='XXX') 459 <select name="beatle"> 460 <option value="">XXX</option> 461 <option value="J" selected="selected">John</option> 462 <option value="P">Paul</option> 463 <option value="G">George</option> 464 <option value="R">Ringo</option> 465 </select> 466 399 467 # NullBooleanSelect Widget #################################################### 400 468 401 469 >>> w = NullBooleanSelect() -
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<o
