Browse Source

[9.0][FIX] added post and uninstall hook for partner_address_street3 (#316)

* [FIX] added hooks,modified version,MVC structure and simple headers
* hooks docstrings & test for post_init_hook from PR#318
* [FIX] remove street3 with 2 different pattern
* [FIX] added test for uninstall_hook
pull/322/head
SodexisTeam 8 years ago
committed by Pedro M. Baeza
parent
commit
4412dc7475
  1. 1
      partner_address_street3/README.rst
  2. 27
      partner_address_street3/__init__.py
  3. 31
      partner_address_street3/__openerp__.py
  4. 42
      partner_address_street3/hooks.py
  5. 21
      partner_address_street3/model/__init__.py
  6. 48
      partner_address_street3/model/partner.py
  7. 7
      partner_address_street3/models/__init__.py
  8. 19
      partner_address_street3/models/partner.py
  9. 20
      partner_address_street3/models/res_country.py
  10. 23
      partner_address_street3/tests/__init__.py
  11. 99
      partner_address_street3/tests/test_street_3.py
  12. 6
      partner_address_street3/view/partner_view.xml

1
partner_address_street3/README.rst

@ -41,6 +41,7 @@ Contributors
* Nicolas Bessi <nicolas.bessi@camptocamp.com>
* Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
* Sodexis Team <dev@sodexis.com>
Maintainer
----------

27
partner_address_street3/__init__.py

@ -1,21 +1,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
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from .hooks import post_init_hook
from .hooks import uninstall_hook

31
partner_address_street3/__openerp__.py

@ -1,35 +1,20 @@
# -*- 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/>.
#
##############################################################################
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': 'Street3 in addresses',
'version': '9.0.0.1.0',
'author': "Camptocamp,Odoo Community Association (OCA)",
'version': '9.0.1.1.0',
'author': "Camptocamp,Sodexis,Odoo Community Association (OCA)",
'maintainer': 'Camptocamp',
'category': 'Sales',
'complexity': 'easy',
'depends': ['base'],
'website': 'http://www.camptocamp.com',
'data': ['view/partner_view.xml'],
'demo': [],
'test': [],
'post_init_hook': 'post_init_hook',
'uninstall_hook': 'uninstall_hook',
'installable': True,
'auto_install': False,
'license': 'AGPL-3',

42
partner_address_street3/hooks.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# 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 +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/>.
#
##############################################################################
from . import partner

48
partner_address_street3/model/partner.py

@ -1,48 +0,0 @@
# -*- 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
class ResPartner(models.Model):
"""Add third field in address"""
_inherit = "res.partner"
street3 = fields.Char('Street 3')
@api.model
def _address_fields(self):
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"
)
)

7
partner_address_street3/models/__init__.py

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import partner
from . import res_country

19
partner_address_street3/models/partner.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import models, fields, api
class ResPartner(models.Model):
"""Add third field in address"""
_inherit = "res.partner"
street3 = fields.Char('Street 3')
@api.model
def _address_fields(self):
fields = super(ResPartner, self)._address_fields()
fields.append('street3')
return fields

20
partner_address_street3/models/res_country.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp 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"
)
)

23
partner_address_street3/tests/__init__.py

@ -1,21 +1,6 @@
# -*- 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/>.
#
##############################################################################
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_street_3

99
partner_address_street3/tests/test_street_3.py

@ -1,88 +1,45 @@
# -*- 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/>.
#
##############################################################################
# Copyright 2014 Nicolas Bessi, Alexandre Fayolle, Camptocamp SA
# Copyright 2016 Sodexis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import openerp.tests.common as test_common
from ..hooks import uninstall_hook
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',
}
)
""""Test address_format has been updated on existing countries"""
us_country = self.env.ref('base.us')
self.assertTrue(country_id)
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,
)
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")
)
'country_id': us_country.id,
})
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,
)
self.assertTrue(bart.street3, 'Tho')
'type': 'contact',
})
self.assertEquals(bart.street3, 'Tho')
# test synchro of street3 on write
homer.write({'street3': 'in OCA we trust'})
self.assertEquals(bart.street3, 'in OCA we trust')
def test_uninstall_hook(self):
""""Test uninstall_hook"""
us_country = self.env.ref('base.us')
self.assertTrue('%(street3)s' in us_country.address_format)
uninstall_hook(self.cr, self.registry)
us_country.invalidate_cache()
self.assertTrue('%(street3)s' not in us_country.address_format)

6
partner_address_street3/view/partner_view.xml

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<odoo>
<record id="add_stree3_in_form_view" model="ir.ui.view">
<field name="name">add stree3 in form view</field>
<field name="model">res.partner</field>
@ -57,5 +56,4 @@
</field>
</record>
</data>
</openerp>
</odoo>
Loading…
Cancel
Save