From d73333404bf4b38b7d160992766baa8edd5336a5 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 2 Nov 2016 07:20:54 +0100 Subject: [PATCH] [10.0] Port partner_address_street3 (#318) Add %(street3)s in 'address_format' of existing countries --- partner_address_street3/README.rst | 16 ++-- partner_address_street3/__init__.py | 22 +---- partner_address_street3/__manifest__.py | 20 ++++ partner_address_street3/__openerp__.py | 37 -------- partner_address_street3/hooks.py | 41 ++++++++ partner_address_street3/model/__init__.py | 21 +---- partner_address_street3/model/country.py | 19 ++++ partner_address_street3/model/partner.py | 41 ++------ partner_address_street3/tests/__init__.py | 20 +--- .../tests/test_street_3.py | 94 +++++-------------- partner_address_street3/view/partner_view.xml | 13 ++- 11 files changed, 125 insertions(+), 219 deletions(-) create mode 100644 partner_address_street3/__manifest__.py delete mode 100644 partner_address_street3/__openerp__.py create mode 100644 partner_address_street3/hooks.py create mode 100644 partner_address_street3/model/country.py diff --git a/partner_address_street3/README.rst b/partner_address_street3/README.rst index 529101270..e966a36f3 100644 --- a/partner_address_street3/README.rst +++ b/partner_address_street3/README.rst @@ -6,15 +6,15 @@ 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 :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 =========== @@ -22,11 +22,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please 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 -`_. +help us smashing it by providing a detailed and welcomed feedback. Credits ======= diff --git a/partner_address_street3/__init__.py b/partner_address_street3/__init__.py index 6ac610f01..ae5d94619 100644 --- a/partner_address_street3/__init__.py +++ b/partner_address_street3/__init__.py @@ -1,21 +1,5 @@ # -*- 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 . -# -############################################################################## + from . import model +from .hooks import post_init_hook +from .hooks import uninstall_hook diff --git a/partner_address_street3/__manifest__.py b/partner_address_street3/__manifest__.py new file mode 100644 index 000000000..c0e1c829c --- /dev/null +++ b/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, +} diff --git a/partner_address_street3/__openerp__.py b/partner_address_street3/__openerp__.py deleted file mode 100644 index 8c5d74d5e..000000000 --- a/partner_address_street3/__openerp__.py +++ /dev/null @@ -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 . -# -############################################################################## -{ - '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, -} diff --git a/partner_address_street3/hooks.py b/partner_address_street3/hooks.py new file mode 100644 index 000000000..7cce70c54 --- /dev/null +++ b/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) diff --git a/partner_address_street3/model/__init__.py b/partner_address_street3/model/__init__.py index b4349f625..4bbda1be2 100644 --- a/partner_address_street3/model/__init__.py +++ b/partner_address_street3/model/__init__.py @@ -1,21 +1,4 @@ # -*- 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 . -# -############################################################################## + from . import partner +from . import country diff --git a/partner_address_street3/model/country.py b/partner_address_street3/model/country.py new file mode 100644 index 000000000..acece74dc --- /dev/null +++ b/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" + ) + ) diff --git a/partner_address_street3/model/partner.py b/partner_address_street3/model/partner.py index 71e78ef54..a12490ed8 100644 --- a/partner_address_street3/model/partner.py +++ b/partner_address_street3/model/partner.py @@ -1,30 +1,15 @@ # -*- 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 . -# -############################################################################## -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): """Add third field in address""" - _inherit = "res.partner" + street3 = fields.Char('Street 3') @api.model @@ -32,17 +17,3 @@ class ResPartner(models.Model): fields = super(ResPartner, self)._address_fields() fields.append('street3') 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" - ) - ) diff --git a/partner_address_street3/tests/__init__.py b/partner_address_street3/tests/__init__.py index 3e6e82972..cace53b9f 100644 --- a/partner_address_street3/tests/__init__.py +++ b/partner_address_street3/tests/__init__.py @@ -1,21 +1,3 @@ # -*- 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 . -# -############################################################################## + from . import test_street_3 diff --git a/partner_address_street3/tests/test_street_3.py b/partner_address_street3/tests/test_street_3.py index ee329bd55..d83ee029a 100644 --- a/partner_address_street3/tests/test_street_3.py +++ b/partner_address_street3/tests/test_street_3.py @@ -1,88 +1,36 @@ # -*- 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 . -# -############################################################################## -import openerp.tests.common as test_common +# © 2014-2016 Camptocamp SA +# @author: Nicolas Bessi +# © 2016 Akretion (Alexis de Lattre ) +# 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', 'city': 'Springfield', 'street': '742 Evergreen Terrace', 'street2': 'Donut Lane', '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', - 'is_company': False, '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') diff --git a/partner_address_street3/view/partner_view.xml b/partner_address_street3/view/partner_view.xml index 79071c851..c8617c211 100644 --- a/partner_address_street3/view/partner_view.xml +++ b/partner_address_street3/view/partner_view.xml @@ -1,8 +1,8 @@ - - - - add stree3 in form view + + + + add street3 in form view res.partner @@ -22,7 +22,7 @@ 'default_supplier': supplier, 'default_customer': customer, 'default_lang': lang,} - @@ -57,5 +57,4 @@ - - +