Code

Ticket #10456: calocal-oldabbrevs.diff

File calocal-oldabbrevs.diff, 4.1 KB (added by mmulley, 5 years ago)

Patch (maintains old, incorrect 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,6 +4,9 @@
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+For backwards compatibility reasons, incorrect abbreviations (NF and YK)
17+are used for Newfoundland and the Yukon.
18+
19 This exists in this standalone file so that it's only imported into memory
20 when explicitly needed.
21@@ -27,21 +31,42 @@
22 
23 PROVINCES_NORMALIZED = {
24     'ab': 'AB',
25+    'alta': 'AB',
26+    'alta.': 'AB',
27     'alberta': 'AB',
28     'bc': 'BC',
29     'b.c.': 'BC',
30     'british columbia': 'BC',
31+    'colombie-britannique': 'BC',
32+    'colombie britannique': 'BC',
33+    'cb': 'BC',
34+    'c-b': 'BC',
35     'mb': 'MB',
36     'manitoba': 'MB',
37     'nb': 'NB',
38     'new brunswick': 'NB',
39+    'nouveau-brunswick': 'NB',
40+    'nouveau brunswick': 'NB',
41     'nf': 'NF',
42+    'nl': 'NF',
43     'newfoundland': 'NF',
44     'newfoundland and labrador': 'NF',
45+    'nfld': 'NF',
46+    'nfld.': 'NF',
47+    'terre-neuve-et-labrador': 'NF',
48+    'terre-neuve et labrador': 'NF',
49+    'terre-neuve': 'NF',
50     'nt': 'NT',
51     'northwest territories': 'NT',
52+    'territoires du nord-ouest': 'NT',
53     'ns': 'NS',
54     'nova scotia': 'NS',
55+    'nouvelle-écosse': 'NS',
56+    'nouvelle-Écosse': 'NS',
57+    'nouvelle écosse': 'NS',
58+    'nouvelle Écosse': 'NS',
59+    'nouvelle-ecosse': 'NS',
60+    'nouvelle ecosse': 'NS',
61     'nu': 'NU',
62     'nunavut': 'NU',
63     'on': 'ON',
64@@ -50,10 +75,28 @@
65     'pei': 'PE',
66     'p.e.i.': 'PE',
67     'prince edward island': 'PE',
68+    'île du prince édouard': 'PE',
69+    'Île du prince Édouard': 'PE',
70+    'ile du prince edouard': 'PE',
71+    'île-du-prince-édouard': 'PE',
72+    'Île-du-prince-Édouard': 'PE',
73+    'ile-du-prince-edouard': 'PE',
74+    'î.p.e.': 'PE',
75+    'i.p.e.': 'PE',
76     'qc': 'QC',
77+    'qu': 'QC',
78+    'pq': 'QC',
79+    'que': 'QC',
80+    'que.': 'QC',
81     'quebec': 'QC',
82+    'québec': 'QC',
83+    'quÉbec': 'QC',
84     'sk': 'SK',
85     'saskatchewan': 'SK',
86+    'sask': 'SK',
87+    'sask.': 'SK',
88     'yk': 'YK',
89+    'yt': 'YK',
90     'yukon': 'YK',
91-}
92\ No newline at end of file
93+    'yukon territory': 'YK',
94+}
95Index: django/contrib/localflavor/ca/forms.py
96===================================================================
97--- django/contrib/localflavor/ca/forms.py      (revision 10020)
98+++ django/contrib/localflavor/ca/forms.py      (working copy)
99@@ -20,6 +20,13 @@
100     def __init__(self, *args, **kwargs):
101         super(CAPostalCodeField, self).__init__(r'^[ABCEGHJKLMNPRSTVXYZ]\d[A-Z] \d[A-Z]\d$',
102             max_length=None, min_length=None, *args, **kwargs)
103+           
104+    def clean(self, value):
105+        if value:
106+            value = str(value).upper()
107+            if len(value) == 6: # Add a space if there isn't one
108+                value = value[:3] + ' ' + value[3:]
109+        return super(CAPostalCodeField, self).clean(value)
110 
111 class CAPhoneNumberField(Field):
112     """Canadian phone number field."""
113Index: tests/regressiontests/forms/localflavor/ca.py
114===================================================================
115--- tests/regressiontests/forms/localflavor/ca.py       (revision 10020)
116+++ tests/regressiontests/forms/localflavor/ca.py       (working copy)
117@@ -37,9 +37,9 @@
118 >>> f.clean('T2S 2H7')
119 u'T2S 2H7'
120 >>> f.clean('T2S2H7')
121-Traceback (most recent call last):
122-...
123-ValidationError: [u'Enter a postal code in the format XXX XXX.']
124+u'T2S 2H7'
125+>>> f.clean('t2s2h7')
126+u'T2S 2H7'
127 >>> f.clean('T2S 2H')
128 Traceback (most recent call last):
129 ...
130@@ -171,6 +171,12 @@
131 u'BC'
132 >>> f.clean('nova scotia')
133 u'NS'
134+>>> f.clean('nf')
135+u'NF'
136+>>> f.clean('nl')
137+u'NF'
138+>>> f.clean('québec  ')
139+u'QC'
140 >>> f.clean('  manitoba ')
141 u'MB'
142 >>> f.clean('T2S 2H7')