diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index d134329018a..f487da88ee1 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -28,6 +28,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] @@ -514,6 +515,47 @@ class res_partner(osv.osv): address_format = '%(company_name)s\n' + address_format 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': + user_obj = self.pool.get('res.users') + fmt = user_obj.browse(cr, uid, uid,context).company_id.country_id + fmt = fmt and fmt.address_format + layouts = { + '%(city)s %(state_code)s\n%(zip)s': """ +
+ + +
+ +
+ """, + '%(zip)s %(city)s': """ +
+ + +
+ +
+ """, + '%(city)s\n%(state_name)s\n%(zip)s': """ +
+ + + +
+ """ + } + for k,v in layouts.items(): + if fmt and (k in fmt): + doc = etree.fromstring(res['arch']) + for node in doc.xpath("//div[@class='address_format']"): + tree = etree.fromstring(v) + node.getparent().replace(node, tree) + res['arch'] = etree.tostring(doc) + break + return res + # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version class res_partner_address(osv.osv): _table = "res_partner"