[MERGE] merged the dev branch with address format country specific. Courtesy of Dhara

bzr revid: qdp-launchpad@openerp.com-20111201163340-yga019rhfwipwvuv
This commit is contained in:
Quentin (OpenERP) 2011-12-01 17:33:40 +01:00
commit 564f00b2da
5 changed files with 51 additions and 0 deletions

View File

@ -85,6 +85,7 @@
<record id="au" model="res.country">
<field name="name">Australia</field>
<field name="code">au</field>
<field name="address_format" eval="'%(street)s\n%(street2)s %(state_code)s %(zip)s\n%(country_name)s'" />
</record>
<record id="aw" model="res.country">
<field name="name">Aruba</field>
@ -109,6 +110,7 @@
<record id="be" model="res.country">
<field name="name">Belgium</field>
<field name="code">be</field>
<field name="address_format" eval="'%(street)s\n%(zip)s, %(city)s\n%(country_name)s'" />
</record>
<record id="bf" model="res.country">
<field name="name">Burkina Faso</field>
@ -145,6 +147,7 @@
<record id="br" model="res.country">
<field name="name">Brazil</field>
<field name="code">br</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s%(country_name)s'" />
</record>
<record id="bs" model="res.country">
<field name="name">Bahamas</field>
@ -173,6 +176,7 @@
<record id="ca" model="res.country">
<field name="name">Canada</field>
<field name="code">ca</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" />
</record>
<record id="cc" model="res.country">
<field name="name">Cocos (Keeling) Islands</field>
@ -254,6 +258,7 @@
<record id="de" model="res.country">
<field name="name">Germany</field>
<field name="code">de</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
</record>
<record id="dj" model="res.country">
<field name="name">Djibouti</field>
@ -298,6 +303,7 @@
<record id="es" model="res.country">
<field name="name">Spain</field>
<field name="code">es</field>
<field name="address_format" eval="'%(street)s\n%(zip)s %(city)s,%(state_name)s\n%(country_name)s'" />
</record>
<record id="et" model="res.country">
<field name="name">Ethiopia</field>
@ -326,6 +332,7 @@
<record id="fr" model="res.country">
<field name="name">France</field>
<field name="code">fr</field>
<field name="address_format" eval="'%(street)s\n%(zip)s %(city)s\n%(country_name)s'" />
</record>
<record id="ga" model="res.country">
<field name="name">Gabon</field>
@ -434,6 +441,7 @@
<record id="in" model="res.country">
<field name="name">India</field>
<field name="code">in</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(zip)s\n%(state_name)s%(country_name)s'" />
</record>
<record id="io" model="res.country">
<field name="name">British Indian Ocean Territory</field>
@ -917,6 +925,7 @@
</record>
<record id="uk" model="res.country">
<field name="name">United Kingdom</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(country_name)s\n%(zip)s'" />
<field name="code">gb</field>
</record>
<record id="um" model="res.country">
@ -926,6 +935,7 @@
<record id="us" model="res.country">
<field name="name">United States</field>
<field name="code">us</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" />
</record>
<record id="uy" model="res.country">
<field name="name">Uruguay</field>

View File

@ -31,6 +31,13 @@ class Country(osv.osv):
'code': fields.char('Country Code', size=2,
help='The ISO country code in two chars.\n'
'You can use this field for quick search.', required=True),
'address_format': fields.text('Address Format', help="""You can state here the usual format to use for the \
addresses belonging to this country.\n\nYou can use the python-style string patern with all the field of the address \
(for example, use '%(street)s' to display the field 'street') plus
\n%(state_name)s: the name of the state
\n%(state_code)s: the code of the state
\n%(country_name)s: the name of the country
\n%(country_code)s: the code of the country"""),
}
_sql_constraints = [
('name_uniq', 'unique (name)',
@ -38,6 +45,9 @@ class Country(osv.osv):
('code_uniq', 'unique (code)',
'The code of the country must be unique !')
]
_defaults = {
'address_format': "%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s",
}
def name_search(self, cr, user, name='', args=None, operator='ilike',
context=None, limit=100):

View File

@ -26,6 +26,7 @@
<form string="Country">
<field name="name" select="1"/>
<field name="code" select="1"/>
<field name="address_format" colspan="4" groups="base.group_extended"/>
</form>
</field>
</record>

View File

@ -356,6 +356,32 @@ class res_partner_address(osv.osv):
def get_city(self, cr, uid, id):
return self.browse(cr, uid, id).city
def _display_address(self, cr, uid, address, context=None):
'''
The purpose of this function is to build and return an address formatted accordingly to the
standards of the country where it belongs.
:param address: browse record of the res.partner.address to format
:returns: the address formatted in a display that fit its country habits (or the default ones
if not country is specified)
:rtype: string
'''
# get the address format
address_format = address.country_id and address.country_id.address_format or \
'%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s'
# get the information that will be injected into the display format
args = {
'state_code': address.state_id and address.state_id.code or '',
'state_name': address.state_id and address.state_id.name or '',
'country_code': address.country_id and address.country_id.code or '',
'country_name': address.country_id and address.country_id.name or '',
}
address_field = ['title', 'street', 'street2', 'zip', 'city']
for field in address_field :
args[field] = getattr(address, field) or ''
return address_format % args
res_partner_address()
class res_partner_category(osv.osv):

View File

@ -170,6 +170,7 @@ class rml_parse(object):
'setHtmlImage' : self.set_html_image,
'strip_name' : self._strip_name,
'time' : time,
'display_address': self.display_address,
# more context members are setup in setCompany() below:
# - company_id
# - logo
@ -313,6 +314,9 @@ class rml_parse(object):
res='%s %s'%(currency_obj.symbol, res)
return res
def display_address(self, address_browse_record):
return self.pool.get('res.partner.address')._display_address(self.cr, self.uid, address_browse_record)
def repeatIn(self, lst, name,nodes_parent=False):
ret_lst = []
for id in lst: