Browse Source

[10.0] Port partner_address_street3 (#318)

Add %(street3)s in 'address_format' of existing countries
pull/690/head
Alexis de Lattre 8 years ago
committed by hveficent
parent
commit
d73333404b
  1. 16
      partner_address_street3/README.rst
  2. 22
      partner_address_street3/__init__.py
  3. 20
      partner_address_street3/__manifest__.py
  4. 37
      partner_address_street3/__openerp__.py
  5. 41
      partner_address_street3/hooks.py
  6. 21
      partner_address_street3/model/__init__.py
  7. 19
      partner_address_street3/model/country.py
  8. 41
      partner_address_street3/model/partner.py
  9. 20
      partner_address_street3/tests/__init__.py
  10. 94
      partner_address_street3/tests/test_street_3.py
  11. 13
      partner_address_street3/view/partner_view.xml

16
partner_address_street3/README.rst

@ -6,15 +6,15 @@
3rd line on partner address 3rd line on partner address
=========================== ===========================
This module extends the base res.partner model by supplying a 3rd line on
addresses (`street3`)
This module extends the base *res.partner* model by supplying a 3rd line on
addresses (`street3`).
Usage
=====
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot :alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/134/9.0
:target: https://runbot.odoo-community.org/runbot/134/10.0
Bug Tracker Bug Tracker
=========== ===========
@ -22,11 +22,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues Bugs are tracked on `GitHub Issues
<https://github.com/OCA/partner-contact/issues>`_. In case of trouble, please <https://github.com/OCA/partner-contact/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first, check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed `feedback
<https://github.com/OCA/
partner-contact/issues/new?body=module:%20
partner_address_street3%0Aversion:%20
9.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
help us smashing it by providing a detailed and welcomed feedback.
Credits Credits
======= =======

22
partner_address_street3/__init__.py

@ -1,21 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import model from . import model
from .hooks import post_init_hook
from .hooks import uninstall_hook

20
partner_address_street3/__manifest__.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# © 2014-2016 Camptocamp SA
# @author: Nicolas Bessi
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': 'Street3 in addresses',
'summary': 'Add a third address line on partners',
'license': 'AGPL-3',
'version': '10.0.1.0.0',
'author': "Camptocamp,Odoo Community Association (OCA)",
'maintainer': 'Camptocamp',
'category': 'Sales',
'depends': ['base'],
'website': 'http://www.camptocamp.com',
'data': ['view/partner_view.xml'],
'post_init_hook': 'post_init_hook',
'uninstall_hook': 'uninstall_hook',
'installable': True,
}

37
partner_address_street3/__openerp__.py

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Street3 in addresses',
'version': '8.0.0.1.0',
'author': "Camptocamp,Odoo Community Association (OCA)",
'maintainer': 'Camptocamp',
'category': 'Sales',
'complexity': 'easy',
'depends': ['base'],
'website': 'http://www.camptocamp.com',
'data': ['view/partner_view.xml'],
'demo': [],
'test': [],
'installable': True,
'auto_install': False,
'license': 'AGPL-3',
'application': False,
}

41
partner_address_street3/hooks.py

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
def post_init_hook(cr, registry):
""" Add street3 to address format """
query = """
UPDATE res_country
SET address_format = replace(
address_format,
E'%(street2)s\n',
E'%(street2)s\n%(street3)s\n'
)
"""
cr.execute(query)
def uninstall_hook(cr, registry):
""" Remove street3 from address format """
# Remove %(street3)s\n from address_format
query = """
UPDATE res_country
SET address_format = replace(
address_format,
E'%(street3)s\n',
''
)
"""
cr.execute(query)
# Remove %(street3)s from address_format
query = """
UPDATE res_country
SET address_format = replace(
address_format,
E'%(street3)s',
''
)
"""
cr.execute(query)

21
partner_address_street3/model/__init__.py

@ -1,21 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import partner from . import partner
from . import country

19
partner_address_street3/model/country.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# © 2014-2016 Camptocamp SA
# @author: Nicolas Bessi
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields
class ResCountry(models.Model):
"""Override default adresses formatting of countries"""
_inherit = 'res.country'
address_format = fields.Text(
default=(
"%(street)s\n%(street2)s\n%(street3)s\n"
"%(city)s %(state_code)s %(zip)s\n"
"%(country_name)s"
)
)

41
partner_address_street3/model/partner.py

@ -1,30 +1,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014-2015 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
# © 2014-2016 Camptocamp SA
# @author: Nicolas Bessi
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields, api
class ResPartner(models.Model): class ResPartner(models.Model):
"""Add third field in address""" """Add third field in address"""
_inherit = "res.partner" _inherit = "res.partner"
street3 = fields.Char('Street 3') street3 = fields.Char('Street 3')
@api.model @api.model
@ -32,17 +17,3 @@ class ResPartner(models.Model):
fields = super(ResPartner, self)._address_fields() fields = super(ResPartner, self)._address_fields()
fields.append('street3') fields.append('street3')
return fields return fields
class res_country(models.Model):
"""Override default adresses formatting of countries"""
_inherit = 'res.country'
address_format = fields.Text(
default=(
"%(street)s\n%(street2)s\n%(street3)s\n"
"%(city)s %(state_code)s %(zip)s\n"
"%(country_name)s"
)
)

20
partner_address_street3/tests/__init__.py

@ -1,21 +1,3 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import test_street_3 from . import test_street_3

94
partner_address_street3/tests/test_street_3.py

@ -1,88 +1,36 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Author: Nicolas Bessi
# Copyright 2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import openerp.tests.common as test_common
# © 2014-2016 Camptocamp SA
# @author: Nicolas Bessi
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase
class TestStreet3(test_common.TransactionCase):
def test_partner(self):
part_model = self.registry('res.partner')
country_model = self.registry('res.country')
country_id = country_model.create(
self.cr,
self.uid,
{
'name': 'Donut Land',
'code': 'DNL',
}
)
class TestStreet3(TransactionCase):
self.assertTrue(country_id)
def test_partner(self):
# Test address_format has been updated on existing countries
us_country = self.env.ref('base.us')
self.assertTrue('%(street3)s' in us_country.address_format)
create_data = {
homer = self.env['res.partner'].create({
'name': 'Homer Simpson', 'name': 'Homer Simpson',
'city': 'Springfield', 'city': 'Springfield',
'street': '742 Evergreen Terrace', 'street': '742 Evergreen Terrace',
'street2': 'Donut Lane', 'street2': 'Donut Lane',
'street3': 'Tho', 'street3': 'Tho',
'country_id': country_id,
'is_company': True
}
homer_id = part_model.create(
self.cr,
self.uid,
create_data
)
homer = part_model.browse(
self.cr,
self.uid,
homer_id,
)
'country_id': us_country.id,
})
self.assertEqual(
homer.country_id.address_format,
("%(street)s\n%(street2)s\n%(street3)s\n"
"%(city)s %(state_code)s %(zip)s\n"
"%(country_name)s")
)
create_data = {
# test synchro of street3 on create
bart = self.env['res.partner'].create({
'name': 'Bart Simpson', 'name': 'Bart Simpson',
'is_company': False,
'parent_id': homer.id, 'parent_id': homer.id,
'use_parent_address': True
}
bart_id = part_model.create(
self.cr,
self.uid,
create_data
)
bart = part_model.browse(
self.cr,
self.uid,
bart_id,
)
'type': 'contact',
})
self.assertEquals(bart.street3, 'Tho')
self.assertTrue(bart.street3, 'Tho')
# test synchro of street3 on write
homer.write({'street3': 'in OCA we trust'})
self.assertEquals(bart.street3, 'in OCA we trust')

13
partner_address_street3/view/partner_view.xml

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="add_stree3_in_form_view" model="ir.ui.view">
<field name="name">add stree3 in form view</field>
<odoo>
<record id="add_street3_in_form_view" model="ir.ui.view">
<field name="name">add street3 in form view</field>
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/> <field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
@ -22,7 +22,7 @@
'default_supplier': supplier, 'default_customer': customer, 'default_supplier': supplier, 'default_customer': customer,
'default_lang': lang,}</attribute> 'default_lang': lang,}</attribute>
</xpath> </xpath>
<xpath expr="/form//field[@name='child_ids']//field[@name='street2']"
<xpath expr="/form//field[@name='child_ids']/form//field[@name='street2']"
position="after"> position="after">
<field name="street3" placeholder="Street 3..." class="o_address_street"/> <field name="street3" placeholder="Street 3..." class="o_address_street"/>
</xpath> </xpath>
@ -57,5 +57,4 @@
</field> </field>
</record> </record>
</data>
</openerp>
</odoo>
Loading…
Cancel
Save