]>
Commit | Line | Data |
---|---|---|
9068dba1 | 1 | #!/usr/bin/python |
9068dba1 | 2 | |
df731215 | 3 | import iso3166 |
9068dba1 | 4 | |
f110a9ff MT |
5 | ZONES = { |
6 | # Europe | |
7 | "EU": ["AD", "AL", "AT", "AX", "BA", "BE", "BG", "BY", "CH", "CZ", "DE", "DK", "EE", | |
8 | "ES", "EU", "FI", "FO", "FR", "FX", "GB", "GG", "GI", "GR", "HR", "HU", "IE", | |
9 | "IM", "IS", "IT", "JE", "LI", "LT", "LU", "LV", "MC", "MD", "ME", "MK", "MT", | |
10 | "NL", "NO", "PL", "PT", "RO", "RS", "RU", "SE", "SI", "SJ", "SK", "SM", "TR", | |
11 | "UA", "VA"], | |
12 | ||
13 | # Asia | |
14 | "AS": ["AE", "AF", "AM", "AP", "AZ", "BD", "BH", "BN", "BT", "CC", "CN", "CX", "CY", | |
15 | "GE", "HK", "ID", "IL", "IN", "IO", "IQ", "IR", "JO", "JP", "KG", "KH", "KP", | |
16 | "KR", "KW", "KZ", "LA", "LB", "LK", "MM", "MN", "MO", "MV", "MY", "NP", "OM", | |
17 | "PH", "PK", "PS", "QA", "SA", "SG", "SY", "TH", "TJ", "TL", "TM", "TW", "UZ", | |
18 | "VN", "YE"], | |
19 | ||
20 | # North America | |
21 | "NA": ["AG", "AI", "AN", "AW", "BB", "BL", "BM", "BS", "BZ", "CA", "CR", "CU", "DM", | |
22 | "DO", "GD", "GL", "GP", "GT", "HN", "HT", "JM", "KN", "KY", "LC", "MF", "MQ", | |
23 | "MS", "MX", "NI", "PA", "PM", "PR", "SV", "TC", "TT", "US", "VC", "VG", "VI"], | |
24 | ||
25 | # South America | |
26 | "SA": ["AR", "BO", "BR", "CL", "CO", "EC", "FK", "GF", "GY", "PE", "PY", "SR", "UY", "VE"], | |
27 | ||
28 | # Africa | |
29 | "AF": ["AO", "BF", "BI", "BJ", "BW", "CD", "CF", "CG", "CI", "CM", "CV", "DJ", "DZ", | |
30 | "EG", "EH", "ER", "ET", "GA", "GH", "GM", "GN", "GQ", "GW", "KE", "KM", "LR", | |
31 | "LS", "LY", "MA", "MG", "ML", "MR", "MU", "MW", "MZ", "NA", "NE", "NG", "RE", | |
32 | "RW", "SC", "SD", "SH", "SL", "SN", "SO", "ST", "SZ", "TD", "TG", "TN", "TZ", | |
33 | "UG", "YT", "ZA", "ZM", "ZW"], | |
34 | ||
35 | # Antartica | |
36 | "AN": ["AQ", "BV", "GS", "HM", "TF"], | |
37 | ||
38 | # Oceania | |
39 | "OC": ["AS", "AU", "CK", "FJ", "FM", "GU", "KI", "MH", "MP", "NC", "NF", "NR", "NU", "NZ", | |
40 | "PF", "PG", "PN", "PW", "SB", "TK", "TO", "TV", "UM", "VU", "WF", "WS"], | |
41 | } | |
42 | ||
92c4b559 MT |
43 | EU_COUNTRIES = ( |
44 | "BE", | |
45 | "BG", | |
46 | "CZ", | |
47 | "DK", | |
48 | "DE", | |
49 | "EE", | |
50 | "IE", | |
51 | "EL", | |
52 | "ES", | |
53 | "FR", | |
54 | "FR", | |
55 | "GB", | |
56 | "HR", | |
57 | "IT", | |
58 | "CY", | |
59 | "LV", | |
60 | "LT", | |
61 | "LU", | |
62 | "HU", | |
63 | "MT", | |
64 | "NL", | |
65 | "AT", | |
66 | "PL", | |
67 | "PT", | |
68 | "RO", | |
69 | "SI", | |
70 | "SK", | |
71 | "FI", | |
72 | "SE", | |
73 | ) | |
74 | ||
df731215 MT |
75 | def get_name(code): |
76 | try: | |
77 | return iso3166.countries_by_alpha2[code].name | |
78 | except KeyError: | |
79 | return code | |
9068dba1 MT |
80 | |
81 | def get_all(locale=None): | |
df731215 | 82 | return sorted(iso3166.countries, key=lambda c: c.name) |
f110a9ff MT |
83 | |
84 | def get_zone(country_code): | |
85 | for zone in ZONES: | |
86 | if country_code in ZONES[zone]: | |
87 | return zone | |
88 | ||
89 | def get_in_zone(zone): | |
90 | try: | |
91 | return ZONES[zone] | |
92 | except KeyError: | |
93 | return [] |