From 28d177e520800af7ef6333765a562246174c9eb4 Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Thu, 30 Aug 2012 19:53:48 +0530 Subject: [PATCH 1/2] [FIX] i18n address format bzr revid: tta@openerp.com-20120830142348-vm37rbyceaup8zfq --- openerp/addons/base/res/res_partner.py | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 93d12228ebe..f70b45d9472 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -507,6 +507,40 @@ class res_partner(osv.osv): args['company_name'] = '' return address_format % args + def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + res = super(res_partner,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) + if view_type == 'form': + fieldstyle = { 'state_id': {'placeholder': "State", 'style': "width:24%;", 'options': '{"no_open": true}', 'class': "oe_no_button"}, + 'city': {'placeholder': "City", 'style': "width: 40%;", 'options': '', 'class': ""}, + 'zip': {'placeholder': "ZIP", 'style': 'width:34%;', 'options': '', 'class': ""} + } + country_id = self.pool.get('res.users').browse(cr, uid, uid,context).company_id.country_id + if country_id and country_id.address_format: + address_format = country_id.address_format + else: + address_format = self._defaults['address_format'] + address_format = address_format.replace("_code","_id").replace("_name","_id") + fields = re.findall('(state_id|city|zip)', address_format) + + nodelist = [] + doc = etree.XML(res['arch']) + for field in ['city','state_id','zip']: + nodelist.append(doc.xpath("//field[@name='%s']" % (field))[0]) + + tot = len(fields) + for idx, node in enumerate(nodelist): + if idx < tot: + field = fields[idx] + node.set('name', fields[idx]) + node.set('style', fieldstyle[field]['style']) + node.set('placeholder', fieldstyle[field]['placeholder']) + node.set('options', fieldstyle[field]['options']) + node.set('class', fieldstyle[field]['class']) + else: + node.getparent().remove(node) + + res['arch'] = etree.tostring(doc) + return res # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version From 1a2f7a5131826ec6cba245292e9364454db62e8c Mon Sep 17 00:00:00 2001 From: Tejas Tank Date: Fri, 31 Aug 2012 16:08:30 +0530 Subject: [PATCH 2/2] IMP: i18n address format. bzr revid: tta@openerp.com-20120831103830-3551ioq85r61kh94 --- openerp/addons/base/res/res_partner.py | 41 +++++++++++++++----------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index f70b45d9472..830804cfae7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -29,6 +29,7 @@ from tools.translate import _ import logging import pooler import pytz +from lxml import etree def _tz_get(self,cr,uid, context=None): return [(x, x) for x in pytz.all_timezones] @@ -508,28 +509,34 @@ class res_partner(osv.osv): return address_format % args def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): - res = super(res_partner,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) - if view_type == 'form': - fieldstyle = { 'state_id': {'placeholder': "State", 'style': "width:24%;", 'options': '{"no_open": true}', 'class': "oe_no_button"}, - 'city': {'placeholder': "City", 'style': "width: 40%;", 'options': '', 'class': ""}, - 'zip': {'placeholder': "ZIP", 'style': 'width:34%;', 'options': '', 'class': ""} - } - country_id = self.pool.get('res.users').browse(cr, uid, uid,context).company_id.country_id - if country_id and country_id.address_format: - address_format = country_id.address_format - else: - address_format = self._defaults['address_format'] - address_format = address_format.replace("_code","_id").replace("_name","_id") - fields = re.findall('(state_id|city|zip)', address_format) - + res = super(res_partner,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) + if view_id and context and view_type == 'form': nodelist = [] doc = etree.XML(res['arch']) for field in ['city','state_id','zip']: - nodelist.append(doc.xpath("//field[@name='%s']" % (field))[0]) + nodes = doc.xpath("//field[@name='%s']" % (field)) + for node in nodes: + nodelist.append(node) + if not nodelist: + return res + + fieldstyle = { + 'state_id': {'placeholder': "State", 'style': "width:24%;", 'options': '{"no_open": true}', 'class': "oe_no_button"}, + 'city': {'placeholder': "City", 'style': "width: 40%;", 'options': '', 'class': ""}, + 'zip': {'placeholder': "ZIP", 'style': 'width:34%;', 'options': '', 'class': ""} + } + user_obj = self.pool.get('res.users') + country_id = user_obj.browse(cr, uid, uid,context).company_id.country_id + if country_id and country_id.address_format: + address_format = country_id.address_format + else: + address_format = "%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s" + address_format = address_format.replace("_code","_id").replace("_name","_id") + fields = re.findall('(state_id|city|zip)', address_format) - tot = len(fields) + cfields = len(fields) for idx, node in enumerate(nodelist): - if idx < tot: + if idx < cfields: field = fields[idx] node.set('name', fields[idx]) node.set('style', fieldstyle[field]['style'])