Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Fixed #4143 -- Added Icelandic localflavor. Note that we use the is_/…

… directory

name because "is" is a reserved word in Python. Patch from
django@einaregilsson.com.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@5080 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit a738f3a4ff01c54d05a214cf8771f93f29152c1e 1 parent 37e4842
Malcolm Tredinnick authored April 26, 2007
81  django/contrib/localflavor/is_/forms.py
... ...
@@ -0,0 +1,81 @@
  1
+"""
  2
+Iceland specific form helpers.
  3
+"""
  4
+from django.newforms import ValidationError
  5
+from django.newforms.fields import RegexField, EMPTY_VALUES
  6
+from django.newforms.widgets import Select
  7
+from django.utils.translation import gettext
  8
+
  9
+
  10
+class ISIdNumberField(RegexField):
  11
+    """
  12
+    Icelandic identification number (kennitala). This is a number every citizen
  13
+    of Iceland has.
  14
+    """
  15
+    def __init__(self, *args, **kwargs):
  16
+        error_msg = gettext(u'Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.')
  17
+        kwargs['min_length'],kwargs['max_length'] = 10,11
  18
+
  19
+        super(ISIdNumberField, self).__init__(r'^\d{6}(-| )?\d{4}$', error_message=error_msg, *args, **kwargs)
  20
+
  21
+    def clean(self, value):
  22
+        value = super(ISIdNumberField, self).clean(value)
  23
+
  24
+        if value in EMPTY_VALUES:
  25
+            return u''
  26
+
  27
+        value = self._canonify(value)
  28
+        if self._validate(value):
  29
+            return self._format(value)
  30
+        else:
  31
+            raise ValidationError(gettext(u'The Icelandic identification number is not valid.'))
  32
+
  33
+
  34
+    def _canonify(self, value):
  35
+        """
  36
+        Returns the value as only digits.
  37
+        """
  38
+        return value.replace('-', '').replace(' ', '')
  39
+
  40
+    def _validate(self, value):
  41
+        """
  42
+        Takes in the value in canonical form and checks the verifier digit. The
  43
+        method is modulo 11.
  44
+        """
  45
+        check = [3, 2, 7, 6, 5, 4, 3, 2, 1, 0]
  46
+        return sum(int(value[i]) * check[i] for i in range(10)) % 11 == 0
  47
+
  48
+    def _format(self, value):
  49
+        """
  50
+        Takes in the value in canonical form and returns it in the common
  51
+        display format.
  52
+        """
  53
+        return value[:6]+'-'+value[6:]
  54
+
  55
+
  56
+class ISPhoneNumberField(RegexField):
  57
+    """
  58
+    Icelandic phone number. Seven digits with an optional hyphen or space after
  59
+    the first three digits.
  60
+    """
  61
+    def __init__(self, *args, **kwargs):
  62
+        kwargs['min_length'], kwargs['max_length'] = 7,8
  63
+        super(ISPhoneNumberField, self).__init__(r'^\d{3}(-| )?\d{4}$', *args, **kwargs)
  64
+
  65
+    def clean(self, value):
  66
+        value = super(ISPhoneNumberField, self).clean(value)
  67
+
  68
+        if value in EMPTY_VALUES:
  69
+            return u''
  70
+
  71
+        return value.replace('-', '').replace(' ', '')
  72
+
  73
+
  74
+class ISPostalCodeSelect(Select):
  75
+    """
  76
+    A Select widget that uses a list of Icelandic postal codes as its choices.
  77
+    """
  78
+    def __init__(self, attrs=None):
  79
+        from is_postalcodes import IS_POSTALCODES
  80
+        super(ISPostalCodeSelect, self).__init__(attrs, choices=IS_POSTALCODES)
  81
+
151  django/contrib/localflavor/is_/is_postalcodes.py
... ...
@@ -0,0 +1,151 @@
  1
+# -*- coding: utf-8 -*-
  2
+
  3
+IS_POSTALCODES = (
  4
+    ('101', u'101 Reykjavík'),
  5
+    ('103', u'103 Reykjavík'),
  6
+    ('104', u'104 Reykjavík'),
  7
+    ('105', u'105 Reykjavík'),
  8
+    ('107', u'107 Reykjavík'),
  9
+    ('108', u'108 Reykjavík'),
  10
+    ('109', u'109 Reykjavík'),
  11
+    ('110', u'110 Reykjavík'),
  12
+    ('111', u'111 Reykjavík'),
  13
+    ('112', u'112 Reykjavík'),
  14
+    ('113', u'113 Reykjavík'),
  15
+    ('116', u'116 Kjalarnes'),
  16
+    ('121', u'121 Reykjavík'),
  17
+    ('123', u'123 Reykjavík'),
  18
+    ('124', u'124 Reykjavík'),
  19
+    ('125', u'125 Reykjavík'),
  20
+    ('127', u'127 Reykjavík'),
  21
+    ('128', u'128 Reykjavík'),
  22
+    ('129', u'129 Reykjavík'),
  23
+    ('130', u'130 Reykjavík'),
  24
+    ('132', u'132 Reykjavík'),
  25
+    ('150', u'150 Reykjavík'),
  26
+    ('155', u'155 Reykjavík'),
  27
+    ('170', u'170 Seltjarnarnes'),
  28
+    ('172', u'172 Seltjarnarnes'),
  29
+    ('190', u'190 Vogar'),
  30
+    ('200', u'200 Kópavogur'),
  31
+    ('201', u'201 Kópavogur'),
  32
+    ('202', u'202 Kópavogur'),
  33
+    ('203', u'203 Kópavogur'),
  34
+    ('210', u'210 Garðabær'),
  35
+    ('212', u'212 Garðabær'),
  36
+    ('220', u'220 Hafnarfjörður'),
  37
+    ('221', u'221 Hafnarfjörður'),
  38
+    ('222', u'222 Hafnarfjörður'),
  39
+    ('225', u'225 Álftanes'),
  40
+    ('230', u'230 Reykjanesbær'),
  41
+    ('232', u'232 Reykjanesbær'),
  42
+    ('233', u'233 Reykjanesbær'),
  43
+    ('235', u'235 Keflavíkurflugvöllur'),
  44
+    ('240', u'240 Grindavík'),
  45
+    ('245', u'245 Sandgerði'),
  46
+    ('250', u'250 Garður'),
  47
+    ('260', u'260 Reykjanesbær'),
  48
+    ('270', u'270 Mosfellsbær'),
  49
+    ('300', u'300 Akranes'),
  50
+    ('301', u'301 Akranes'),
  51
+    ('302', u'302 Akranes'),
  52
+    ('310', u'310 Borgarnes'),
  53
+    ('311', u'311 Borgarnes'),
  54
+    ('320', u'320 Reykholt í Borgarfirði'),
  55
+    ('340', u'340 Stykkishólmur'),
  56
+    ('345', u'345 Flatey á Breiðafirði'),
  57
+    ('350', u'350 Grundarfjörður'),
  58
+    ('355', u'355 Ólafsvík'),
  59
+    ('356', u'356 Snæfellsbær'),
  60
+    ('360', u'360 Hellissandur'),
  61
+    ('370', u'370 Búðardalur'),
  62
+    ('371', u'371 Búðardalur'),
  63
+    ('380', u'380 Reykhólahreppur'),
  64
+    ('400', u'400 Ísafjörður'),
  65
+    ('401', u'401 Ísafjörður'),
  66
+    ('410', u'410 Hnífsdalur'),
  67
+    ('415', u'415 Bolungarvík'),
  68
+    ('420', u'420 Súðavík'),
  69
+    ('425', u'425 Flateyri'),
  70
+    ('430', u'430 Suðureyri'),
  71
+    ('450', u'450 Patreksfjörður'),
  72
+    ('451', u'451 Patreksfjörður'),
  73
+    ('460', u'460 Tálknafjörður'),
  74
+    ('465', u'465 Bíldudalur'),
  75
+    ('470', u'470 Þingeyri'),
  76
+    ('471', u'471 Þingeyri'),
  77
+    ('500', u'500 Staður'),
  78
+    ('510', u'510 Hólmavík'),
  79
+    ('512', u'512 Hólmavík'),
  80
+    ('520', u'520 Drangsnes'),
  81
+    ('522', u'522 Kjörvogur'),
  82
+    ('523', u'523 Bær'),
  83
+    ('524', u'524 Norðurfjörður'),
  84
+    ('530', u'530 Hvammstangi'),
  85
+    ('531', u'531 Hvammstangi'),
  86
+    ('540', u'540 Blönduós'),
  87
+    ('541', u'541 Blönduós'),
  88
+    ('545', u'545 Skagaströnd'),
  89
+    ('550', u'550 Sauðárkrókur'),
  90
+    ('551', u'551 Sauðárkrókur'),
  91
+    ('560', u'560 Varmahlíð'),
  92
+    ('565', u'565 Hofsós'),
  93
+    ('566', u'566 Hofsós'),
  94
+    ('570', u'570 Fljót'),
  95
+    ('580', u'580 Siglufjörður'),
  96
+    ('600', u'600 Akureyri'),
  97
+    ('601', u'601 Akureyri'),
  98
+    ('602', u'602 Akureyri'),
  99
+    ('603', u'603 Akureyri'),
  100
+    ('610', u'610 Grenivík'),
  101
+    ('611', u'611 Grímsey'),
  102
+    ('620', u'620 Dalvík'),
  103
+    ('621', u'621 Dalvík'),
  104
+    ('625', u'625 Ólafsfjörður'),
  105
+    ('630', u'630 Hrísey'),
  106
+    ('640', u'640 Húsavík'),
  107
+    ('641', u'641 Húsavík'),
  108
+    ('645', u'645 Fosshóll'),
  109
+    ('650', u'650 Laugar'),
  110
+    ('660', u'660 Mývatn'),
  111
+    ('670', u'670 Kópasker'),
  112
+    ('671', u'671 Kópasker'),
  113
+    ('675', u'675 Raufarhöfn'),
  114
+    ('680', u'680 Þórshöfn'),
  115
+    ('681', u'681 Þórshöfn'),
  116
+    ('685', u'685 Bakkafjörður'),
  117
+    ('690', u'690 Vopnafjörður'),
  118
+    ('700', u'700 Egilsstaðir'),
  119
+    ('701', u'701 Egilsstaðir'),
  120
+    ('710', u'710 Seyðisfjörður'),
  121
+    ('715', u'715 Mjóifjörður'),
  122
+    ('720', u'720 Borgarfjörður eystri'),
  123
+    ('730', u'730 Reyðarfjörður'),
  124
+    ('735', u'735 Eskifjörður'),
  125
+    ('740', u'740 Neskaupstaður'),
  126
+    ('750', u'750 Fáskrúðsfjörður'),
  127
+    ('755', u'755 Stöðvarfjörður'),
  128
+    ('760', u'760 Breiðdalsvík'),
  129
+    ('765', u'765 Djúpivogur'),
  130
+    ('780', u'780 Höfn í Hornafirði'),
  131
+    ('781', u'781 Höfn í Hornafirði'),
  132
+    ('785', u'785 Öræfi'),
  133
+    ('800', u'800 Selfoss'),
  134
+    ('801', u'801 Selfoss'),
  135
+    ('802', u'802 Selfoss'),
  136
+    ('810', u'810 Hveragerði'),
  137
+    ('815', u'815 Þorlákshöfn'),
  138
+    ('820', u'820 Eyrarbakki'),
  139
+    ('825', u'825 Stokkseyri'),
  140
+    ('840', u'840 Laugarvatn'),
  141
+    ('845', u'845 Flúðir'),
  142
+    ('850', u'850 Hella'),
  143
+    ('851', u'851 Hella'),
  144
+    ('860', u'860 Hvolsvöllur'),
  145
+    ('861', u'861 Hvolsvöllur'),
  146
+    ('870', u'870 Vík'),
  147
+    ('871', u'871 Vík'),
  148
+    ('880', u'880 Kirkjubæjarklaustur'),
  149
+    ('900', u'900 Vestmannaeyjar'),
  150
+    ('902', u'902 Vestmannaeyjar')
  151
+)
0  localflavor/is_/__init__.py b/django/contrib/localflavor/is_/__init__.py
No changes.
98  tests/regressiontests/forms/localflavor.py
@@ -1052,4 +1052,102 @@
1052 1052
 <option value="VIC">Victoria</option>
1053 1053
 <option value="WA">Western Australia</option>
1054 1054
 </select>
  1055
+
  1056
+## ISIdNumberField #############################################################
  1057
+
  1058
+>>> from django.contrib.localflavor.is_.forms import *
  1059
+>>> f = ISIdNumberField()
  1060
+>>> f.clean('2308803449')
  1061
+u'230880-3449'
  1062
+>>> f.clean('230880-3449')
  1063
+u'230880-3449'
  1064
+>>> f.clean('230880 3449')
  1065
+u'230880-3449'
  1066
+>>> f.clean('230880343')
  1067
+Traceback (most recent call last):
  1068
+...
  1069
+ValidationError: [u'Ensure this value has at least 10 characters.']
  1070
+>>> f.clean('230880343234')
  1071
+Traceback (most recent call last):
  1072
+...
  1073
+ValidationError: [u'Ensure this value has at most 11 characters.']
  1074
+>>> f.clean('abcdefghijk')
  1075
+Traceback (most recent call last):
  1076
+...
  1077
+ValidationError: [u'Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.']
  1078
+>>> f.clean('')
  1079
+Traceback (most recent call last):
  1080
+...
  1081
+ValidationError: [u'This field is required.']
  1082
+>>> f.clean(None)
  1083
+Traceback (most recent call last):
  1084
+...
  1085
+ValidationError: [u'This field is required.']
  1086
+>>> f.clean('2308803439')
  1087
+Traceback (most recent call last):
  1088
+...
  1089
+ValidationError: [u'The Icelandic identification number is not valid.']
  1090
+>>> f.clean('2308803440')
  1091
+u'230880-3440'
  1092
+>>> f = ISIdNumberField(required=False)
  1093
+>>> f.clean(None)
  1094
+u''
  1095
+>>> f.clean('')
  1096
+u''
  1097
+
  1098
+## ISPhoneNumberField #############################################################
  1099
+
  1100
+>>> from django.contrib.localflavor.is_.forms import *
  1101
+>>> f = ISPhoneNumberField()
  1102
+>>> f.clean('1234567')
  1103
+u'1234567'
  1104
+>>> f.clean('123 4567')
  1105
+u'1234567'
  1106
+>>> f.clean('123-4567')
  1107
+u'1234567'
  1108
+>>> f.clean('123-456')
  1109
+Traceback (most recent call last):
  1110
+...
  1111
+ValidationError: [u'Enter a valid value.']
  1112
+>>> f.clean('123456')
  1113
+Traceback (most recent call last):
  1114
+...
  1115
+ValidationError: [u'Ensure this value has at least 7 characters.']
  1116
+>>> f.clean('123456555')
  1117
+Traceback (most recent call last):
  1118
+...
  1119
+ValidationError: [u'Ensure this value has at most 8 characters.']
  1120
+>>> f.clean('abcdefg')
  1121
+Traceback (most recent call last):
  1122
+ValidationError: [u'Enter a valid value.']
  1123
+>>> f.clean(' 1234567 ')
  1124
+Traceback (most recent call last):
  1125
+...
  1126
+ValidationError: [u'Ensure this value has at most 8 characters.']
  1127
+>>> f.clean(' 12367  ')
  1128
+Traceback (most recent call last):
  1129
+...
  1130
+ValidationError: [u'Enter a valid value.']
  1131
+
  1132
+>>> f.clean('')
  1133
+Traceback (most recent call last):
  1134
+...
  1135
+ValidationError: [u'This field is required.']
  1136
+>>> f.clean(None)
  1137
+Traceback (most recent call last):
  1138
+...
  1139
+ValidationError: [u'This field is required.']
  1140
+>>> f = ISPhoneNumberField(required=False)
  1141
+>>> f.clean(None)
  1142
+u''
  1143
+>>> f.clean('')
  1144
+u''
  1145
+
  1146
+## ISPostalCodeSelect #############################################################
  1147
+
  1148
+>>> from django.contrib.localflavor.is_.forms import *
  1149
+>>> f = ISPostalCodeSelect()
  1150
+
  1151
+>>> f.render('foo', 'bar')
  1152
+u'<select name="foo">\n<option value="101">101 Reykjav\xedk</option>\n<option value="103">103 Reykjav\xedk</option>\n<option value="104">104 Reykjav\xedk</option>\n<option value="105">105 Reykjav\xedk</option>\n<option value="107">107 Reykjav\xedk</option>\n<option value="108">108 Reykjav\xedk</option>\n<option value="109">109 Reykjav\xedk</option>\n<option value="110">110 Reykjav\xedk</option>\n<option value="111">111 Reykjav\xedk</option>\n<option value="112">112 Reykjav\xedk</option>\n<option value="113">113 Reykjav\xedk</option>\n<option value="116">116 Kjalarnes</option>\n<option value="121">121 Reykjav\xedk</option>\n<option value="123">123 Reykjav\xedk</option>\n<option value="124">124 Reykjav\xedk</option>\n<option value="125">125 Reykjav\xedk</option>\n<option value="127">127 Reykjav\xedk</option>\n<option value="128">128 Reykjav\xedk</option>\n<option value="129">129 Reykjav\xedk</option>\n<option value="130">130 Reykjav\xedk</option>\n<option value="132">132 Reykjav\xedk</option>\n<option value="150">150 Reykjav\xedk</option>\n<option value="155">155 Reykjav\xedk</option>\n<option value="170">170 Seltjarnarnes</option>\n<option value="172">172 Seltjarnarnes</option>\n<option value="190">190 Vogar</option>\n<option value="200">200 K\xf3pavogur</option>\n<option value="201">201 K\xf3pavogur</option>\n<option value="202">202 K\xf3pavogur</option>\n<option value="203">203 K\xf3pavogur</option>\n<option value="210">210 Gar\xf0ab\xe6r</option>\n<option value="212">212 Gar\xf0ab\xe6r</option>\n<option value="220">220 Hafnarfj\xf6r\xf0ur</option>\n<option value="221">221 Hafnarfj\xf6r\xf0ur</option>\n<option value="222">222 Hafnarfj\xf6r\xf0ur</option>\n<option value="225">225 \xc1lftanes</option>\n<option value="230">230 Reykjanesb\xe6r</option>\n<option value="232">232 Reykjanesb\xe6r</option>\n<option value="233">233 Reykjanesb\xe6r</option>\n<option value="235">235 Keflav\xedkurflugv\xf6llur</option>\n<option value="240">240 Grindav\xedk</option>\n<option value="245">245 Sandger\xf0i</option>\n<option value="250">250 Gar\xf0ur</option>\n<option value="260">260 Reykjanesb\xe6r</option>\n<option value="270">270 Mosfellsb\xe6r</option>\n<option value="300">300 Akranes</option>\n<option value="301">301 Akranes</option>\n<option value="302">302 Akranes</option>\n<option value="310">310 Borgarnes</option>\n<option value="311">311 Borgarnes</option>\n<option value="320">320 Reykholt \xed Borgarfir\xf0i</option>\n<option value="340">340 Stykkish\xf3lmur</option>\n<option value="345">345 Flatey \xe1 Brei\xf0afir\xf0i</option>\n<option value="350">350 Grundarfj\xf6r\xf0ur</option>\n<option value="355">355 \xd3lafsv\xedk</option>\n<option value="356">356 Sn\xe6fellsb\xe6r</option>\n<option value="360">360 Hellissandur</option>\n<option value="370">370 B\xfa\xf0ardalur</option>\n<option value="371">371 B\xfa\xf0ardalur</option>\n<option value="380">380 Reykh\xf3lahreppur</option>\n<option value="400">400 \xcdsafj\xf6r\xf0ur</option>\n<option value="401">401 \xcdsafj\xf6r\xf0ur</option>\n<option value="410">410 Hn\xedfsdalur</option>\n<option value="415">415 Bolungarv\xedk</option>\n<option value="420">420 S\xfa\xf0av\xedk</option>\n<option value="425">425 Flateyri</option>\n<option value="430">430 Su\xf0ureyri</option>\n<option value="450">450 Patreksfj\xf6r\xf0ur</option>\n<option value="451">451 Patreksfj\xf6r\xf0ur</option>\n<option value="460">460 T\xe1lknafj\xf6r\xf0ur</option>\n<option value="465">465 B\xedldudalur</option>\n<option value="470">470 \xdeingeyri</option>\n<option value="471">471 \xdeingeyri</option>\n<option value="500">500 Sta\xf0ur</option>\n<option value="510">510 H\xf3lmav\xedk</option>\n<option value="512">512 H\xf3lmav\xedk</option>\n<option value="520">520 Drangsnes</option>\n<option value="522">522 Kj\xf6rvogur</option>\n<option value="523">523 B\xe6r</option>\n<option value="524">524 Nor\xf0urfj\xf6r\xf0ur</option>\n<option value="530">530 Hvammstangi</option>\n<option value="531">531 Hvammstangi</option>\n<option value="540">540 Bl\xf6ndu\xf3s</option>\n<option value="541">541 Bl\xf6ndu\xf3s</option>\n<option value="545">545 Skagastr\xf6nd</option>\n<option value="550">550 Sau\xf0\xe1rkr\xf3kur</option>\n<option value="551">551 Sau\xf0\xe1rkr\xf3kur</option>\n<option value="560">560 Varmahl\xed\xf0</option>\n<option value="565">565 Hofs\xf3s</option>\n<option value="566">566 Hofs\xf3s</option>\n<option value="570">570 Flj\xf3t</option>\n<option value="580">580 Siglufj\xf6r\xf0ur</option>\n<option value="600">600 Akureyri</option>\n<option value="601">601 Akureyri</option>\n<option value="602">602 Akureyri</option>\n<option value="603">603 Akureyri</option>\n<option value="610">610 Greniv\xedk</option>\n<option value="611">611 Gr\xedmsey</option>\n<option value="620">620 Dalv\xedk</option>\n<option value="621">621 Dalv\xedk</option>\n<option value="625">625 \xd3lafsfj\xf6r\xf0ur</option>\n<option value="630">630 Hr\xedsey</option>\n<option value="640">640 H\xfasav\xedk</option>\n<option value="641">641 H\xfasav\xedk</option>\n<option value="645">645 Fossh\xf3ll</option>\n<option value="650">650 Laugar</option>\n<option value="660">660 M\xfdvatn</option>\n<option value="670">670 K\xf3pasker</option>\n<option value="671">671 K\xf3pasker</option>\n<option value="675">675 Raufarh\xf6fn</option>\n<option value="680">680 \xde\xf3rsh\xf6fn</option>\n<option value="681">681 \xde\xf3rsh\xf6fn</option>\n<option value="685">685 Bakkafj\xf6r\xf0ur</option>\n<option value="690">690 Vopnafj\xf6r\xf0ur</option>\n<option value="700">700 Egilssta\xf0ir</option>\n<option value="701">701 Egilssta\xf0ir</option>\n<option value="710">710 Sey\xf0isfj\xf6r\xf0ur</option>\n<option value="715">715 Mj\xf3ifj\xf6r\xf0ur</option>\n<option value="720">720 Borgarfj\xf6r\xf0ur eystri</option>\n<option value="730">730 Rey\xf0arfj\xf6r\xf0ur</option>\n<option value="735">735 Eskifj\xf6r\xf0ur</option>\n<option value="740">740 Neskaupsta\xf0ur</option>\n<option value="750">750 F\xe1skr\xfa\xf0sfj\xf6r\xf0ur</option>\n<option value="755">755 St\xf6\xf0varfj\xf6r\xf0ur</option>\n<option value="760">760 Brei\xf0dalsv\xedk</option>\n<option value="765">765 Dj\xfapivogur</option>\n<option value="780">780 H\xf6fn \xed Hornafir\xf0i</option>\n<option value="781">781 H\xf6fn \xed Hornafir\xf0i</option>\n<option value="785">785 \xd6r\xe6fi</option>\n<option value="800">800 Selfoss</option>\n<option value="801">801 Selfoss</option>\n<option value="802">802 Selfoss</option>\n<option value="810">810 Hverager\xf0i</option>\n<option value="815">815 \xdeorl\xe1ksh\xf6fn</option>\n<option value="820">820 Eyrarbakki</option>\n<option value="825">825 Stokkseyri</option>\n<option value="840">840 Laugarvatn</option>\n<option value="845">845 Fl\xfa\xf0ir</option>\n<option value="850">850 Hella</option>\n<option value="851">851 Hella</option>\n<option value="860">860 Hvolsv\xf6llur</option>\n<option value="861">861 Hvolsv\xf6llur</option>\n<option value="870">870 V\xedk</option>\n<option value="871">871 V\xedk</option>\n<option value="880">880 Kirkjub\xe6jarklaustur</option>\n<option value="900">900 Vestmannaeyjar</option>\n<option value="902">902 Vestmannaeyjar</option>\n</select>'
1055 1153
 """

0 notes on commit a738f3a

Please sign in to comment.
Something went wrong with that request. Please try again.