Code

Ticket #10456: calocal.diff

File calocal.diff, 5.1 KB (added by mmulley, 5 years ago)

Patch (using correct postal abbreviations)

Line 
1Index: django/contrib/localflavor/ca/ca_provinces.py
2===================================================================
3--- django/contrib/localflavor/ca/ca_provinces.py       (revision 10020)
4+++ django/contrib/localflavor/ca/ca_provinces.py       (working copy)
5@@ -1,3 +1,4 @@
6+# -*- coding: utf-8 -*-
7 """
8 An alphabetical list of provinces and territories for use as `choices`
9 in a formfield., and a mapping of province misspellings/abbreviations to
10@@ -3,5 +4,5 @@
11 normalized abbreviations
12 
13-Source: http://www.canada.gc.ca/othergov/prov_e.html
14+Source: http://www.canadapost.ca/tools/pg/manual/PGaddress-e.asp#1380608
15 
16 This exists in this standalone file so that it's only imported into memory
17@@ -14,7 +15,7 @@
18     ('BC', 'British Columbia'),
19     ('MB', 'Manitoba'),
20     ('NB', 'New Brunswick'),
21-    ('NF', 'Newfoundland and Labrador'),
22+    ('NL', 'Newfoundland and Labrador'),
23     ('NT', 'Northwest Territories'),
24     ('NS', 'Nova Scotia'),
25     ('NU', 'Nunavut'),
26@@ -22,26 +23,47 @@
27     ('PE', 'Prince Edward Island'),
28     ('QC', 'Quebec'),
29     ('SK', 'Saskatchewan'),
30-    ('YK', 'Yukon')
31+    ('YT', 'Yukon')
32 )
33 
34 PROVINCES_NORMALIZED = {
35     'ab': 'AB',
36+    'alta': 'AB',
37+    'alta.': 'AB',
38     'alberta': 'AB',
39     'bc': 'BC',
40     'b.c.': 'BC',
41     'british columbia': 'BC',
42+    'colombie-britannique': 'BC',
43+    'colombie britannique': 'BC',
44+    'cb': 'BC',
45+    'c-b': 'BC',
46     'mb': 'MB',
47     'manitoba': 'MB',
48     'nb': 'NB',
49     'new brunswick': 'NB',
50-    'nf': 'NF',
51-    'newfoundland': 'NF',
52-    'newfoundland and labrador': 'NF',
53+    'nouveau-brunswick': 'NB',
54+    'nouveau brunswick': 'NB',
55+    'nf': 'NL',
56+    'nl': 'NL',
57+    'newfoundland': 'NL',
58+    'newfoundland and labrador': 'NL',
59+    'nfld': 'NL',
60+    'nfld.': 'NL',
61+    'terre-neuve-et-labrador': 'NL',
62+    'terre-neuve et labrador': 'NL',
63+    'terre-neuve': 'NL',
64     'nt': 'NT',
65     'northwest territories': 'NT',
66+    'territoires du nord-ouest': 'NT',
67     'ns': 'NS',
68     'nova scotia': 'NS',
69+    'nouvelle-écosse': 'NS',
70+    'nouvelle-Écosse': 'NS',
71+    'nouvelle écosse': 'NS',
72+    'nouvelle Écosse': 'NS',
73+    'nouvelle-ecosse': 'NS',
74+    'nouvelle ecosse': 'NS',
75     'nu': 'NU',
76     'nunavut': 'NU',
77     'on': 'ON',
78@@ -50,10 +72,28 @@
79     'pei': 'PE',
80     'p.e.i.': 'PE',
81     'prince edward island': 'PE',
82+    'île du prince édouard': 'PE',
83+    'Île du prince Édouard': 'PE',
84+    'ile du prince edouard': 'PE',
85+    'île-du-prince-édouard': 'PE',
86+    'Île-du-prince-Édouard': 'PE',
87+    'ile-du-prince-edouard': 'PE',
88+    'î.p.e.': 'PE',
89+    'i.p.e.': 'PE',
90     'qc': 'QC',
91+    'qu': 'QC',
92+    'pq': 'QC',
93+    'que': 'QC',
94+    'que.': 'QC',
95     'quebec': 'QC',
96+    'québec': 'QC',
97+    'quÉbec': 'QC',
98     'sk': 'SK',
99     'saskatchewan': 'SK',
100-    'yk': 'YK',
101-    'yukon': 'YK',
102-}
103\ No newline at end of file
104+    'sask': 'SK',
105+    'sask.': 'SK',
106+    'yk': 'YT',
107+    'yt': 'YT',
108+    'yukon': 'YT',
109+    'yukon territory': 'YT',
110+}
111Index: django/contrib/localflavor/ca/forms.py
112===================================================================
113--- django/contrib/localflavor/ca/forms.py      (revision 10020)
114+++ django/contrib/localflavor/ca/forms.py      (working copy)
115@@ -20,6 +20,13 @@
116     def __init__(self, *args, **kwargs):
117         super(CAPostalCodeField, self).__init__(r'^[ABCEGHJKLMNPRSTVXYZ]\d[A-Z] \d[A-Z]\d$',
118             max_length=None, min_length=None, *args, **kwargs)
119+           
120+    def clean(self, value):
121+        if value:
122+            value = str(value).upper()
123+            if len(value) == 6: # Add a space if there isn't one
124+                value = value[:3] + ' ' + value[3:]
125+        return super(CAPostalCodeField, self).clean(value)
126 
127 class CAPhoneNumberField(Field):
128     """Canadian phone number field."""
129Index: tests/regressiontests/forms/localflavor/ca.py
130===================================================================
131--- tests/regressiontests/forms/localflavor/ca.py       (revision 10020)
132+++ tests/regressiontests/forms/localflavor/ca.py       (working copy)
133@@ -37,9 +37,9 @@
134 >>> f.clean('T2S 2H7')
135 u'T2S 2H7'
136 >>> f.clean('T2S2H7')
137-Traceback (most recent call last):
138-...
139-ValidationError: [u'Enter a postal code in the format XXX XXX.']
140+u'T2S 2H7'
141+>>> f.clean('t2s2h7')
142+u'T2S 2H7'
143 >>> f.clean('T2S 2H')
144 Traceback (most recent call last):
145 ...
146@@ -171,6 +171,10 @@
147 u'BC'
148 >>> f.clean('nova scotia')
149 u'NS'
150+>>> f.clean('nf')
151+u'NL'
152+>>> f.clean('québec  ')
153+u'QC'
154 >>> f.clean('  manitoba ')
155 u'MB'
156 >>> f.clean('T2S 2H7')
157@@ -194,7 +198,7 @@
158 <option value="BC">British Columbia</option>
159 <option value="MB">Manitoba</option>
160 <option value="NB">New Brunswick</option>
161-<option value="NF">Newfoundland and Labrador</option>
162+<option value="NL">Newfoundland and Labrador</option>
163 <option value="NT">Northwest Territories</option>
164 <option value="NS">Nova Scotia</option>
165 <option value="NU">Nunavut</option>
166@@ -202,7 +206,7 @@
167 <option value="PE">Prince Edward Island</option>
168 <option value="QC">Quebec</option>
169 <option value="SK">Saskatchewan</option>
170-<option value="YK">Yukon</option>
171+<option value="YT">Yukon</option>
172 </select>
173 
174 # CASocialInsuranceNumberField #################################################