From f1ebdf1ca98768dffb8ae1cca6220740f84c17ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Wed, 23 Mar 2016 11:49:00 +0100 Subject: [PATCH] Add 3-letters and numeric code issue5195 review23681002 --- CHANGELOG | 1 + country.py | 32 ++- country.xml | 498 ++++++++++++++++++++++++++++++++++++++++++ scripts/countries.py | 4 +- view/country_form.xml | 4 + 5 files changed, 529 insertions(+), 10 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d6867f2e83..4bcb08f416 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Add 3-letters and numeric code * Add Python3 support Version 3.8.0 - 2015-11-02 diff --git a/country.py b/country.py index ddaec965a5..b34398a2eb 100644 --- a/country.py +++ b/country.py @@ -14,7 +14,13 @@ class Country(ModelSQL, ModelView): help='The full name of the country.', select=True) code = fields.Char('Code', size=2, select=True, help='The ISO country code in two chars.\n' - 'You can use this field for quick search.', required=True) + 'You can use this field for quick search.') + code3 = fields.Char('3-letters Code', size=3, select=True, + help=('The ISO country code in three chars.\n' + 'You can use this field for quick search.')) + code_numeric = fields.Char('Numeric Code', select=True, + help=('The ISO numeric country code.\n' + 'You can use this field for quick search.')) subdivisions = fields.One2Many('country.subdivision', 'country', 'Subdivisions') @@ -34,18 +40,25 @@ class Country(ModelSQL, ModelView): table.drop_constraint('name_uniq') table.drop_constraint('code_uniq') + # Migration from 3.8: remove required on code + table.not_null_action('code', 'remove') + @classmethod def search_rec_name(cls, name, clause): - if cls.search([('code',) + tuple(clause[1:])], limit=1): - return [('code',) + tuple(clause[1:])] - return [(cls._rec_name,) + tuple(clause[1:])] + return ['OR', + ('name',) + tuple(clause[1:]), + ('code',) + tuple(clause[1:]), + ('code3',) + tuple(clause[1:]), + ('code_numeric',) + tuple(clause[1:]), + ] @classmethod def create(cls, vlist): vlist = [x.copy() for x in vlist] for vals in vlist: - if 'code' in vals and vals['code']: - vals['code'] = vals['code'].upper() + for code in {'code', 'code3', 'code_numeric'}: + if code in vals and vals[code]: + vals[code] = vals[code].upper() return super(Country, cls).create(vlist) @classmethod @@ -53,9 +66,10 @@ class Country(ModelSQL, ModelView): actions = iter(args) args = [] for countries, values in zip(actions, actions): - if values.get('code'): - values = values.copy() - values['code'] = values['code'].upper() + for code in {'code', 'code3', 'code_numeric'}: + if values.get(code): + values = values.copy() + values[code] = values[code].upper() args.extend((countries, values)) super(Country, cls).write(*args) diff --git a/country.xml b/country.xml index 46c25e53f0..a891b8ebd6 100644 --- a/country.xml +++ b/country.xml @@ -90,1246 +90,1744 @@ this repository contains the full copyright notices and license terms. --> Afghanistan AF + AFG + 004 Åland Islands AX + ALA + 248 Albania AL + ALB + 008 Algeria DZ + DZA + 012 American Samoa AS + ASM + 016 Angola AO + AGO + 024 Anguilla AI + AIA + 660 Antarctica AQ + ATA + 010 Antigua and Barbuda AG + ATG + 028 Argentina AR + ARG + 032 Armenia AM + ARM + 051 Aruba AW + ABW + 533 Australia AU + AUS + 036 Austria AT + AUT + 040 Azerbaijan AZ + AZE + 031 Bahamas BS + BHS + 044 Bahrain BH + BHR + 048 Bangladesh BD + BGD + 050 Barbados BB + BRB + 052 Belarus BY + BLR + 112 Belgium BE + BEL + 056 Belize BZ + BLZ + 084 Benin BJ + BEN + 204 Bermuda BM + BMU + 060 Bhutan BT + BTN + 064 Bolivia, Plurinational State of BO + BOL + 068 Bonaire, Sint Eustatius and Saba BQ + BES + 535 Bosnia and Herzegovina BA + BIH + 070 Botswana BW + BWA + 072 Bouvet Island BV + BVT + 074 Brazil BR + BRA + 076 British Indian Ocean Territory IO + IOT + 086 Brunei Darussalam BN + BRN + 096 Bulgaria BG + BGR + 100 Burkina Faso BF + BFA + 854 Burundi BI + BDI + 108 Cambodia KH + KHM + 116 Cameroon CM + CMR + 120 Canada CA + CAN + 124 Cape Verde CV + CPV + 132 Cayman Islands KY + CYM + 136 Central African Republic CF + CAF + 140 Chad TD + TCD + 148 Chile CL + CHL + 152 China CN + CHN + 156 Christmas Island CX + CXR + 162 Cocos (Keeling) Islands CC + CCK + 166 Colombia CO + COL + 170 Comoros KM + COM + 174 Congo CG + COG + 178 Congo, The Democratic Republic of the CD + COD + 180 Cook Islands CK + COK + 184 Costa Rica CR + CRI + 188 Côte d'Ivoire CI + CIV + 384 Croatia HR + HRV + 191 Cuba CU + CUB + 192 Curaçao CW + CUW + 531 Cyprus CY + CYP + 196 Czech Republic CZ + CZE + 203 Denmark DK + DNK + 208 Djibouti DJ + DJI + 262 Dominica DM + DMA + 212 Dominican Republic DO + DOM + 214 Ecuador EC + ECU + 218 Egypt EG + EGY + 818 El Salvador SV + SLV + 222 Equatorial Guinea GQ + GNQ + 226 Eritrea ER + ERI + 232 Estonia EE + EST + 233 Ethiopia ET + ETH + 231 Falkland Islands (Malvinas) FK + FLK + 238 Faroe Islands FO + FRO + 234 Fiji FJ + FJI + 242 Finland FI + FIN + 246 France FR + FRA + 250 French Guiana GF + GUF + 254 French Polynesia PF + PYF + 258 French Southern Territories TF + ATF + 260 Gabon GA + GAB + 266 Gambia GM + GMB + 270 Georgia GE + GEO + 268 Germany DE + DEU + 276 Ghana GH + GHA + 288 Gibraltar GI + GIB + 292 Greece GR + GRC + 300 Greenland GL + GRL + 304 Grenada GD + GRD + 308 Guadeloupe GP + GLP + 312 Guam GU + GUM + 316 Guatemala GT + GTM + 320 Guernsey GG + GGY + 831 Guinea GN + GIN + 324 Guinea-Bissau GW + GNB + 624 Guyana GY + GUY + 328 Haiti HT + HTI + 332 Heard Island and McDonald Islands HM + HMD + 334 Holy See (Vatican City State) VA + VAT + 336 Honduras HN + HND + 340 Hong Kong HK + HKG + 344 Hungary HU + HUN + 348 Iceland IS + ISL + 352 India IN + IND + 356 Indonesia ID + IDN + 360 Iran, Islamic Republic of IR + IRN + 364 Iraq IQ + IRQ + 368 Ireland IE + IRL + 372 Isle of Man IM + IMN + 833 Israel IL + ISR + 376 Italy IT + ITA + 380 Jamaica JM + JAM + 388 Japan JP + JPN + 392 Jersey JE + JEY + 832 Jordan JO + JOR + 400 Kazakhstan KZ + KAZ + 398 Kenya KE + KEN + 404 Kiribati KI + KIR + 296 Korea, Democratic People's Republic of KP + PRK + 408 Korea, Republic of KR + KOR + 410 Kuwait KW + KWT + 414 Kyrgyzstan KG + KGZ + 417 Lao People's Democratic Republic LA + LAO + 418 Latvia LV + LVA + 428 Lebanon LB + LBN + 422 Lesotho LS + LSO + 426 Liberia LR + LBR + 430 Libya LY + LBY + 434 Liechtenstein LI + LIE + 438 Lithuania LT + LTU + 440 Luxembourg LU + LUX + 442 Macao MO + MAC + 446 Macedonia, Republic of MK + MKD + 807 Madagascar MG + MDG + 450 Malawi MW + MWI + 454 Malaysia MY + MYS + 458 Maldives MV + MDV + 462 Mali ML + MLI + 466 Malta MT + MLT + 470 Marshall Islands MH + MHL + 584 Martinique MQ + MTQ + 474 Mauritania MR + MRT + 478 Mauritius MU + MUS + 480 Mayotte YT + MYT + 175 Mexico MX + MEX + 484 Micronesia, Federated States of FM + FSM + 583 Moldova, Republic of MD + MDA + 498 Monaco MC + MCO + 492 Mongolia MN + MNG + 496 Montenegro ME + MNE + 499 Montserrat MS + MSR + 500 Morocco MA + MAR + 504 Mozambique MZ + MOZ + 508 Myanmar MM + MMR + 104 Namibia NA + NAM + 516 Nauru NR + NRU + 520 Nepal NP + NPL + 524 Netherlands NL + NLD + 528 New Caledonia NC + NCL + 540 New Zealand NZ + NZL + 554 Nicaragua NI + NIC + 558 Niger NE + NER + 562 Nigeria NG + NGA + 566 Niue NU + NIU + 570 Norfolk Island NF + NFK + 574 Northern Mariana Islands MP + MNP + 580 Norway NO + NOR + 578 Oman OM + OMN + 512 Pakistan PK + PAK + 586 Palau PW + PLW + 585 Palestine, State of PS + PSE + 275 Panama PA + PAN + 591 Papua New Guinea PG + PNG + 598 Paraguay PY + PRY + 600 Peru PE + PER + 604 Philippines PH + PHL + 608 Pitcairn PN + PCN + 612 Poland PL + POL + 616 Portugal PT + PRT + 620 Puerto Rico PR + PRI + 630 Qatar QA + QAT + 634 Réunion RE + REU + 638 Romania RO + ROU + 642 Russian Federation RU + RUS + 643 Rwanda RW + RWA + 646 Saint Barthélemy BL + BLM + 652 Saint Helena, Ascension and Tristan da Cunha SH + SHN + 654 Saint Kitts and Nevis KN + KNA + 659 Saint Lucia LC + LCA + 662 Saint Martin (French part) MF + MAF + 663 Saint Pierre and Miquelon PM + SPM + 666 Saint Vincent and the Grenadines VC + VCT + 670 Samoa WS + WSM + 882 San Marino SM + SMR + 674 Sao Tome and Principe ST + STP + 678 Saudi Arabia SA + SAU + 682 Senegal SN + SEN + 686 Serbia RS + SRB + 688 Seychelles SC + SYC + 690 Sierra Leone SL + SLE + 694 Singapore SG + SGP + 702 Sint Maarten (Dutch part) SX + SXM + 534 Slovakia SK + SVK + 703 Slovenia SI + SVN + 705 Solomon Islands SB + SLB + 090 Somalia SO + SOM + 706 South Africa ZA + ZAF + 710 South Georgia and the South Sandwich Islands GS + SGS + 239 Spain ES + ESP + 724 Sri Lanka LK + LKA + 144 Sudan SD + SDN + 729 Suriname SR + SUR + 740 South Sudan SS + SSD + 728 Svalbard and Jan Mayen SJ + SJM + 744 Swaziland SZ + SWZ + 748 Sweden SE + SWE + 752 Switzerland CH + CHE + 756 Syrian Arab Republic SY + SYR + 760 Taiwan, Province of China TW + TWN + 158 Tajikistan TJ + TJK + 762 Tanzania, United Republic of TZ + TZA + 834 Thailand TH + THA + 764 Timor-Leste TL + TLS + 626 Togo TG + TGO + 768 Tokelau TK + TKL + 772 Tonga TO + TON + 776 Trinidad and Tobago TT + TTO + 780 Tunisia TN + TUN + 788 Turkey TR + TUR + 792 Turkmenistan TM + TKM + 795 Turks and Caicos Islands TC + TCA + 796 Tuvalu TV + TUV + 798 Uganda UG + UGA + 800 Ukraine UA + UKR + 804 United Arab Emirates AE + ARE + 784 United Kingdom GB + GBR + 826 United States US + USA + 840 United States Minor Outlying Islands UM + UMI + 581 Uruguay UY + URY + 858 Uzbekistan UZ + UZB + 860 Vanuatu VU + VUT + 548 Venezuela, Bolivarian Republic of VE + VEN + 862 Viet Nam VN + VNM + 704 Virgin Islands, British VG + VGB + 092 Virgin Islands, U.S. VI + VIR + 850 Wallis and Futuna WF + WLF + 876 Western Sahara EH + ESH + 732 Yemen YE + YEM + 887 Zambia ZM + ZMB + 894 Zimbabwe ZW + ZWE + 716 diff --git a/scripts/countries.py b/scripts/countries.py index 1158d9abc4..f823310c37 100755 --- a/scripts/countries.py +++ b/scripts/countries.py @@ -11,8 +11,10 @@ for country in pycountry.countries: %s %s + %s + %s \n''' % (country.alpha2.lower(), country.name, - country.alpha2) + country.alpha2, country.alpha3, country.numeric) sys.stdout.write(record.encode('utf-8')) sys.stdout.write(u' \n') diff --git a/view/country_form.xml b/view/country_form.xml index fcce8e35e0..617c5fc2a4 100644 --- a/view/country_form.xml +++ b/view/country_form.xml @@ -6,5 +6,9 @@ this repository contains the full copyright notices and license terms. -->