changeset 6794fd13cb64 in modules/party:default
details: https://hg.tryton.org/modules/party?cmd=changeset;node=6794fd13cb64
description:
Load and update pycountry data from script
issue8346
review285501002
diffstat:
CHANGELOG | 1 +
address.py | 66 +++++++++++------
address.xml | 154 ++++++++++++++++++++----------------------
view/address_format_form.xml | 8 +-
view/address_format_list.xml | 4 +-
5 files changed, 124 insertions(+), 109 deletions(-)
diffs (781 lines):
diff -r f9adae254aac -r 6794fd13cb64 CHANGELOG
--- a/CHANGELOG Thu Jun 06 10:10:38 2019 +0200
+++ b/CHANGELOG Tue Jul 30 23:02:46 2019 +0200
@@ -1,3 +1,4 @@
+* Replace country and language in address format by codes
* Add sequence field to contact mechanism form view
Version 5.2.0 - 2019-05-06
diff -r f9adae254aac -r 6794fd13cb64 address.py
--- a/address.py Thu Jun 06 10:10:38 2019 +0200
+++ b/address.py Tue Jul 30 23:02:46 2019 +0200
@@ -3,8 +3,8 @@
'Address'
from string import Template
-from sql import Null
-from sql.conditionals import Case, Coalesce
+from sql.conditionals import Coalesce
+from sql.functions import Substring
from sql.operators import Concat
from trytond.i18n import gettext
@@ -225,8 +225,8 @@
class AddressFormat(DeactivableMixin, MatchMixin, ModelSQL, ModelView):
"Address Format"
__name__ = 'party.address.format'
- country = fields.Many2One('country.country', "Country")
- language = fields.Many2One('ir.lang', "Language")
+ country_code = fields.Char("Country Code", size=2)
+ language_code = fields.Char("Language Code", size=2)
format_ = fields.Text("Format", required=True,
help="Available variables (also in upper case):\n"
"- ${party_name}\n"
@@ -245,8 +245,42 @@
@classmethod
def __setup__(cls):
super(AddressFormat, cls).__setup__()
- cls._order.insert(0, ('country', 'ASC'))
- cls._order.insert(1, ('language', 'ASC'))
+ cls._order.insert(0, ('country_code', 'ASC NULLS LAST'))
+ cls._order.insert(1, ('language_code', 'ASC NULLS LAST'))
+
+ @classmethod
+ def __register__(cls, module_name):
+ pool = Pool()
+ Country = pool.get('country.country')
+ Language = pool.get('ir.lang')
+ country = Country.__table__()
+ language = Language.__table__()
+ table = cls.__table__()
+ cursor = Transaction().connection.cursor()
+
+ super().__register__(module_name)
+
+ table_h = cls.__table_handler__()
+
+ # Migration from 5.2: replace country by country_code
+ if table_h.column_exist('country'):
+ query = table.update(
+ [table.country_code],
+ country.select(
+ country.code,
+ where=country.id == table.country))
+ cursor.execute(*query)
+ table_h.drop_column('country')
+
+ # Migration from 5.2: replace language by language_code
+ if table_h.column_exist('language'):
+ query = table.update(
+ [table.language_code],
+ language.select(
+ Substring(language.code, 0, 2),
+ where=language.id == table.language))
+ cursor.execute(*query)
+ table_h.drop_column('language')
@classmethod
def default_format_(cls):
@@ -257,11 +291,6 @@
${subdivision}
${COUNTRY}"""
- @staticmethod
- def order_language(tables):
- table, _ = tables[None]
- return [Case((table.language == Null, 1), else_=0), table.language]
-
@classmethod
def create(cls, *args, **kwargs):
records = super(AddressFormat, cls).create(*args, **kwargs)
@@ -298,24 +327,13 @@
@classmethod
def get_format(cls, address, pattern=None):
- pool = Pool()
- Language = pool.get('ir.lang')
-
if pattern is None:
pattern = {}
else:
pattern = pattern.copy()
pattern.setdefault(
- 'country', address.country.id if address.country else None)
-
- languages = Language.search([
- ('code', '=', Transaction().language),
- ], limit=1)
- if languages:
- language, = languages
- else:
- language = None
- pattern.setdefault('language', language.id if language else None)
+ 'country_code', address.country.code if address.country else None)
+ pattern.setdefault('language', Transaction().language[:2])
key = tuple(sorted(pattern.items()))
format_ = cls._get_format_cache.get(key)
diff -r f9adae254aac -r 6794fd13cb64 address.xml
--- a/address.xml Thu Jun 06 10:10:38 2019 +0200
+++ b/address.xml Tue Jul 30 23:02:46 2019 +0200
@@ -86,10 +86,10 @@
</record>
</data>
- <data noupdate="1" grouped="1" skiptest="1">
+ <data noupdate="1" grouped="1">
<!-- From https://en.wikipedia.org/wiki/Address_(geography) -->
<record model="party.address.format" id="address_format_ar">
- <field name="country" ref="country.ar"/>
+ <field name="country_code">AR</field>
<field name="format_">${party_name}
${name}
${street}
@@ -99,7 +99,7 @@
</record>
<record model="party.address.format" id="address_format_au">
- <field name="country" ref="country.au"/>
+ <field name="country_code">AU</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -110,7 +110,7 @@
</record>
<record model="party.address.format" id="address_format_at">
- <field name="country" ref="country.at"/>
+ <field name="country_code">AT</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -120,7 +120,7 @@
</record>
<record model="party.address.format" id="address_format_bd">
- <field name="country" ref="country.bd"/>
+ <field name="country_code">BD</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -130,7 +130,7 @@
</record>
<record model="party.address.format" id="address_format_by">
- <field name="country" ref="country.by"/>
+ <field name="country_code">BY</field>
<field name="format_">${party_name}
${name}
${street}
@@ -140,7 +140,7 @@
</record>
<record model="party.address.format" id="address_format_be">
- <field name="country" ref="country.be"/>
+ <field name="country_code">BE</field>
<field name="format_">${attn}
${party_name}
${name}
@@ -150,7 +150,7 @@
</record>
<record model="party.address.format" id="address_format_br">
- <field name="country" ref="country.br"/>
+ <field name="country_code">BR</field>
<field name="format_">${party_name}
${street}
${name}
@@ -160,8 +160,8 @@
</record>
<record model="party.address.format" id="address_format_ca_fr">
- <field name="country" ref="country.ca"/>
- <field name="language" ref="ir.lang_fr"/>
+ <field name="country_code">CA</field>
+ <field name="language_code">fr</field>
<field name="format_">${attn}
${party_name}
${name}
@@ -171,7 +171,7 @@
</record>
<record model="party.address.format" id="address_format_ca">
- <field name="country" ref="country.ca"/>
+ <field name="country_code">CA</field>
<field name="format_">${ATTN}
${PARTY_NAME}
${NAME}
@@ -181,7 +181,7 @@
</record>
<record model="party.address.format" id="address_format_cl">
- <field name="country" ref="country.cl"/>
+ <field name="country_code">CL</field>
<field name="format_">${party_name}
${street}
${name}
@@ -191,22 +191,22 @@
</record>
<record model="party.address.format" id="address_format_cn_zh_CN">
- <field name="country" ref="country.cn"/>
- <field name="language" ref="ir.lang_zh_CN"/>
+ <field name="country_code">CN</field>
+ <field name="language_code">zh</field>
<field name="format_">${COUNTRY} ${ZIP}
${subdivision}${city}${street}${name}
${party_name}</field>
</record>
<record model="party.address.format" id="address_format_cn">
- <field name="country" ref="country.cn"/>
+ <field name="country_code">CN</field>
<field name="format_">${COUNTRY} ${ZIP}
${subdivision}, ${city}, ${street}, ${name}
${party_name}</field>
</record>
<record model="party.address.format" id="address_format_hr">
- <field name="country" ref="country.hr"/>
+ <field name="country_code">HR</field>
<field name="format_">${party_name}
${street}
${COUNTRY_CODE}-${ZIP} ${city}
@@ -214,7 +214,7 @@
</record>
<record model="party.address.format" id="address_format_cz">
- <field name="country" ref="country.cz"/>
+ <field name="country_code">CZ</field>
<field name="format_">${party_name}
${attn}
${street}
@@ -223,7 +223,7 @@
</record>
<record model="party.address.format" id="address_format_dk">
- <field name="country" ref="country.dk"/>
+ <field name="country_code">DK</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -231,7 +231,7 @@
</record>
<record model="party.address.format" id="address_format_ee">
- <field name="country" ref="country.ee"/>
+ <field name="country_code">EE</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -239,7 +239,7 @@
</record>
<record model="party.address.format" id="address_format_fi">
- <field name="country" ref="country.fi"/>
+ <field name="country_code">FI</field>
<field name="format_">${attn}
${party_name}
${street}
@@ -248,7 +248,7 @@
</record>
<record model="party.address.format" id="address_format_fr">
- <field name="country" ref="country.fr"/>
+ <field name="country_code">FR</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -258,7 +258,7 @@
</record>
<record model="party.address.format" id="address_format_de">
- <field name="country" ref="country.de"/>
+ <field name="country_code">DE</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -268,7 +268,7 @@
</record>
<record model="party.address.format" id="address_format_gr">
- <field name="country" ref="country.gr"/>
+ <field name="country_code">GR</field>
<field name="format_">${party_name}
${street}
${COUNTRY_CODE}-${ZIP} ${CITY}
@@ -276,7 +276,7 @@
</record>
<record model="party.address.format" id="address_format_hk">
- <field name="country" ref="country.hk"/>
+ <field name="country_code">HK</field>
<field name="format_">${party_name}
${name}
${street}
@@ -285,7 +285,7 @@
</record>
<record model="party.address.format" id="address_format_hu">
- <field name="country" ref="country.hu"/>
+ <field name="country_code">HU</field>
<field name="format_">${party_name}
${city}
${street}
@@ -294,7 +294,7 @@
</record>
<record model="party.address.format" id="address_format_is">
- <field name="country" ref="country.is"/>
+ <field name="country_code">IS</field>
<field name="format_">${party_name}
${street}
${name}
@@ -303,7 +303,7 @@
</record>
<record model="party.address.format" id="address_format_in">
- <field name="country" ref="country.in"/>
+ <field name="country_code">IN</field>
<field name="format_">${party_name}
${name}
${street}
@@ -313,7 +313,7 @@
</record>
<record model="party.address.format" id="address_format_id">
- <field name="country" ref="country.id"/>
+ <field name="country_code">ID</field>
<field name="format_">${party_name}
${name}
${street}
@@ -323,7 +323,7 @@
</record>
<record model="party.address.format" id="address_format_ir">
- <field name="country" ref="country.ir"/>
+ <field name="country_code">IR</field>
<field name="format_">${party_name}
${name}
${city}
@@ -334,7 +334,7 @@
</record>
<record model="party.address.format" id="address_format_iq">
- <field name="country" ref="country.iq"/>
+ <field name="country_code">IQ</field>
<field name="format_">${party_name}
${street}
${name}
@@ -344,7 +344,7 @@
</record>
<record model="party.address.format" id="address_format_ie">
- <field name="country" ref="country.ie"/>
+ <field name="country_code">IE</field>
<field name="format_">${party_name}
${street}
${city} ${zip}
@@ -352,7 +352,7 @@
</record>
<record model="party.address.format" id="address_format_il">
- <field name="country" ref="country.il"/>
+ <field name="country_code">IL</field>
<field name="format_">${party_name}
${street}
${city} ${zip}
@@ -360,7 +360,7 @@
</record>
<record model="party.address.format" id="address_format_it">
- <field name="country" ref="country.it"/>
+ <field name="country_code">IT</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -369,38 +369,34 @@
${COUNTRY}</field>
</record>
- <!-- for Japan language
<record model="party.address.format" id="address_format_jp_jp">
- <field name="country" ref="country.jp"/>
- <field name="language" ref="ir.lang_jp"/>
+ <field name="country_code">JP</field>
+ <field name="language_code">jp</field>
<field name="format_">${COUNTRY}
${zip}
${subdivision}${city}${street}
${party_name}</field>
</record>
- -->
<record model="party.address.format" id="address_format_jp">
- <field name="country" ref="country.jp"/>
+ <field name="country_code">JP</field>
<field name="format_">${party_name}
${street}
${city}, ${SUBDIVISION} ${zip}
${COUNTRY}</field>
</record>
- <!-- for Korean language
<record model="party.address.format" id="address_format_kr_ko">
- <field name="country" ref="country.kr"/>
- <field name="language" ref="ir.lang_ko"/>
+ <field name="country_code">KR</field>
+ <field name="language_code">ko</field>
<field name="format_">${COUNTRY}
${street}
${party_name}
${zip}</field>
</record>
- -->
<record model="party.address.format" id="address_format_kr">
- <field name="country" ref="country.kr"/>
+ <field name="country_code">KR</field>
<field name="format_">${party_name}
${street}
${city}, ${subdivision} ${zip}
@@ -408,7 +404,7 @@
</record>
<record model="party.address.format" id="address_format_lv">
- <field name="country" ref="country.lv"/>
+ <field name="country_code">LV</field>
<field name="format_">${party_name}
${street}
${city}
@@ -418,8 +414,8 @@
</record>
<record model="party.address.format" id="address_format_mo_zh_CN">
- <field name="country" ref="country.mo"/>
- <field name="language" ref="ir.lang_zh_CN"/>
+ <field name="country_code">MO</field>
+ <field name="language_code">zh</field>
<field name="format_">${COUNTRY}
${city}
${street}
@@ -427,7 +423,7 @@
</record>
<record model="party.address.format" id="address_format_mo">
- <field name="country" ref="country.mo"/>
+ <field name="country_code">MO</field>
<field name="format_">${party_name}
${street}
${city}
@@ -435,7 +431,7 @@
</record>
<record model="party.address.format" id="address_format_my">
- <field name="country" ref="country.my"/>
+ <field name="country_code">MY</field>
<field name="format_">${attn}
${party_name}
${name}
@@ -446,7 +442,7 @@
</record>
<record model="party.address.format" id="address_format_mx">
- <field name="country" ref="country.mx"/>
+ <field name="country_code">MX</field>
<field name="format_">${attn}
${party_name}
${street}
@@ -456,7 +452,7 @@
</record>
<record model="party.address.format" id="address_format_nl">
- <field name="country" ref="country.nl"/>
+ <field name="country_code">NL</field>
<field name="format_">${party_name}
${attn}
${name}
@@ -466,7 +462,7 @@
</record>
<record model="party.address.format" id="address_format_nz">
- <field name="country" ref="country.nz"/>
+ <field name="country_code">NZ</field>
<field name="format_">${party_name}
${street}
${city} ${zip}
@@ -474,7 +470,7 @@
</record>
<record model="party.address.format" id="address_format_no">
- <field name="country" ref="country.no"/>
+ <field name="country_code">NO</field>
<field name="format_">${party_name}
${street}
${zip} ${CITY}
@@ -482,7 +478,7 @@
</record>
<record model="party.address.format" id="address_format_om">
- <field name="country" ref="country.om"/>
+ <field name="country_code">OM</field>
<field name="format_">${party_name}
${street}
${city}
@@ -490,7 +486,7 @@
</record>
<record model="party.address.format" id="address_format_pk">
- <field name="country" ref="country.pk"/>
+ <field name="country_code">PK</field>
<field name="format_">${party_name}
${street}
${city}
@@ -500,7 +496,7 @@
</record>
<record model="party.address.format" id="address_format_pe">
- <field name="country" ref="country.pe"/>
+ <field name="country_code">PE</field>
<field name="format_">${party_name}
${street}
${name}
@@ -510,7 +506,7 @@
</record>
<record model="party.address.format" id="address_format_ph">
- <field name="country" ref="country.ph"/>
+ <field name="country_code">PH</field>
<field name="format_">${party_name}
${street}
${zip} ${CITY}
@@ -518,7 +514,7 @@
</record>
<record model="party.address.format" id="address_format_pl">
- <field name="country" ref="country.pl"/>
+ <field name="country_code">PL</field>
<field name="format_">${attn} ${party_name}
${street}
${zip} ${city}
@@ -526,7 +522,7 @@
</record>
<record model="party.address.format" id="address_format_pt">
- <field name="country" ref="country.pt"/>
+ <field name="country_code">PT</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -534,7 +530,7 @@
</record>
<record model="party.address.format" id="address_format_qa">
- <field name="country" ref="country.qa"/>
+ <field name="country_code">QA</field>
<field name="format_">${party_name}
${street}
${city}
@@ -542,7 +538,7 @@
</record>
<record model="party.address.format" id="address_format_ro">
- <field name="country" ref="country.ro"/>
+ <field name="country_code">RO</field>
<field name="format_">${attn} ${party_name}
${street}
${city}
@@ -551,7 +547,7 @@
</record>
<record model="party.address.format" id="address_format_ru">
- <field name="country" ref="country.ru"/>
+ <field name="country_code">RU</field>
<field name="format_">${party_name}
${street}
${city}
@@ -561,7 +557,7 @@
</record>
<record model="party.address.format" id="address_format_sa">
- <field name="country" ref="country.sa"/>
+ <field name="country_code">SA</field>
<field name="format_">${party_name}
${street}
${city} ${zip}
@@ -569,7 +565,7 @@
</record>
<record model="party.address.format" id="address_format_rs">
- <field name="country" ref="country.rs"/>
+ <field name="country_code">RS</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -577,7 +573,7 @@
</record>
<record model="party.address.format" id="address_format_sg">
- <field name="country" ref="country.sg"/>
+ <field name="country_code">SG</field>
<field name="format_">${party_name}
${street}
${name}
@@ -586,7 +582,7 @@
</record>
<record model="party.address.format" id="address_format_sk">
- <field name="country" ref="country.sk"/>
+ <field name="country_code">SK</field>
<field name="format_">${attn}
${party_name}
${street}
@@ -595,7 +591,7 @@
</record>
<record model="party.address.format" id="address_format_sl">
- <field name="country" ref="country.sl"/>
+ <field name="country_code">SL</field>
<field name="format_">${party_name}
${attn}
${street}
@@ -604,7 +600,7 @@
</record>
<record model="party.address.format" id="address_format_es">
- <field name="country" ref="country.es"/>
+ <field name="country_code">ES</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -613,7 +609,7 @@
</record>
<record model="party.address.format" id="address_format_lk">
- <field name="country" ref="country.lk"/>
+ <field name="country_code">LK</field>
<field name="format_">${party_name}
${street}
${CITY}
@@ -622,7 +618,7 @@
</record>
<record model="party.address.format" id="address_format_se">
- <field name="country" ref="country.se"/>
+ <field name="country_code">SE</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -630,7 +626,7 @@
</record>
<record model="party.address.format" id="address_format_ch">
- <field name="country" ref="country.ch"/>
+ <field name="country_code">CH</field>
<field name="format_">${party_name}
${street}
${zip} ${city}
@@ -638,8 +634,8 @@
</record>
<record model="party.address.format" id="address_format_tw_zh_CN">
- <field name="country" ref="country.tw"/>
- <field name="language" ref="ir.lang_zh_CN"/>
+ <field name="country_code">TW</field>
+ <field name="language_code">zh</field>
<field name="format_">${COUNTRY}
${zip}
${street}
@@ -647,7 +643,7 @@
</record>
<record model="party.address.format" id="address_format_tw">
- <field name="country" ref="country.tw"/>
+ <field name="country_code">TW</field>
<field name="format_">${party_name}
${street}
${city}, ${subdivision} ${zip}
@@ -655,7 +651,7 @@
</record>
<record model="party.address.format" id="address_format_th">
- <field name="country" ref="country.th"/>
+ <field name="country_code">TH</field>
<field name="format_">${party_name}
${street}
${name}
@@ -665,7 +661,7 @@
</record>
<record model="party.address.format" id="address_format_tr">
- <field name="country" ref="country.tr"/>
+ <field name="country_code">TR</field>
<field name="format_">${party_name}
${attn}
${street}
@@ -675,7 +671,7 @@
</record>
<record model="party.address.format" id="address_format_ua">
- <field name="country" ref="country.ua"/>
+ <field name="country_code">UA</field>
<field name="format_">${party_name}
${street}
${city}
@@ -685,7 +681,7 @@
</record>
<record model="party.address.format" id="address_format_gb">
- <field name="country" ref="country.gb"/>
+ <field name="country_code">GB</field>
<field name="format_">${party_name}
${street}
${CITY}
@@ -694,7 +690,7 @@
</record>
<record model="party.address.format" id="address_format_us">
- <field name="country" ref="country.us"/>
+ <field name="country_code">US</field>
<field name="format_">${attn}
${party_name}
${street}
@@ -703,7 +699,7 @@
</record>
<record model="party.address.format" id="address_format_vn">
- <field name="country" ref="country.vn"/>
+ <field name="country_code">VN</field>
<field name="format_">${party_name}
${street}
${city}
diff -r f9adae254aac -r 6794fd13cb64 view/address_format_form.xml
--- a/view/address_format_form.xml Thu Jun 06 10:10:38 2019 +0200
+++ b/view/address_format_form.xml Tue Jul 30 23:02:46 2019 +0200
@@ -1,11 +1,11 @@
<?xml version="1.0"?>
<form>
- <label name="country"/>
- <field name="country"/>
+ <label name="country_code"/>
+ <field name="country_code"/>
<label name="active"/>
<field name="active"/>
- <label name="language"/>
- <field name="language"/>
+ <label name="language_code"/>
+ <field name="language_code"/>
<separator name="format_" colspan="4"/>
<field name="format_" colspan="4"/>
</form>
diff -r f9adae254aac -r 6794fd13cb64 view/address_format_list.xml
--- a/view/address_format_list.xml Thu Jun 06 10:10:38 2019 +0200
+++ b/view/address_format_list.xml Tue Jul 30 23:02:46 2019 +0200
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<tree>
- <field name="country"/>
- <field name="language"/>
+ <field name="country_code"/>
+ <field name="language_code"/>
</tree>