Browse Source

[FIX] company_country: Don't fail if account is already installed (#1786)

* [FIX] company_country: Don't fail if account is already installed

When `company_country` is installed, it performs the following:
- Look for the `COUNTRY` environment variable
- If not found, look for a `l10n_*` module that is about to be installed
- If not found, raise an exception

However, If the account module is installed, it shouldn't fail even if
the environment variable is not defined, because changing the
company's country will have no effect anyway, as the account hook was
already run and an `l10n` module was already been installed.

This commit fixes the above by skipping the process if the `account`
module is installed, and print an informative message to the log.

* Update __manifest__.py

Co-authored-by: Moises Lopez - https://www.vauxoo.com/ <moylop260@vauxoo.com>
12.0-mig-module_prototyper_last
Luis González [Vauxoo] 5 years ago
committed by GitHub
parent
commit
de012e4283
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      company_country/README.rst
  2. 4
      company_country/__manifest__.py
  3. 15
      company_country/models/res_config.py
  4. 6
      company_country/tests/test_company_country.py

1
company_country/README.rst

@ -80,6 +80,7 @@ Contributors
~~~~~~~~~~~~
* Moisés López <moylop260@vauxoo.com>
* Luis González <lgonzalez@vauxoo.com>
Other credits

4
company_country/__manifest__.py

@ -3,10 +3,10 @@
{
"name": "Company Country",
"summary": "Set country to main company",
"version": "12.0.1.0.0",
"version": "12.0.1.0.1",
"category": "base",
"website": "https://github.com/OCA/server-tools/tree/12.0/company_country",
"maintainers": ['moylop260'],
"maintainers": ['moylop260', 'luisg123v'],
"author": "Vauxoo, Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": [],

15
company_country/models/res_config.py

@ -1,10 +1,13 @@
# Copyright 2016 Vauxoo
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
import os
from odoo import _, api, models
from odoo.exceptions import ValidationError
_logger = logging.getLogger(__name__)
class CompanyCountryConfigSettings(models.TransientModel):
_name = 'company.country.config.settings'
@ -12,10 +15,20 @@ class CompanyCountryConfigSettings(models.TransientModel):
@api.model
def load_company_country(self, country_code=None):
account_installed = self.env['ir.module.module'].search([
('name', '=', 'account'),
('state', '=', 'installed'),
], limit=1)
if account_installed:
# If the account module is installed, that means changing the
# company's country will have no effect, as the account hook was
# already run and an l10n module was already been installed
_logger.info("account module already installed, skipping")
return
if not country_code:
country_code = os.environ.get('COUNTRY')
if country_code == "":
self.env.ref('base.main_company').write({'country_id': None})
self.env.ref('base.main_company').write({'country_id': False})
return
if not country_code:
l10n_to_install = self.env['ir.module.module'].search([

6
company_country/tests/test_company_country.py

@ -15,7 +15,9 @@ class TestCompanyCountry(TransactionCase):
self.us_country = self.env.ref('base.us')
self.mx_country = self.env.ref('base.mx')
self.main_company = self.env.ref('base.main_company')
self.module_account = self.env.ref('base.module_account')
self.main_company.write({'country_id': self.us_country.id})
self.module_account.write({'state': 'uninstalled'})
self.env_country = os.environ.get('COUNTRY')
def tearDown(self):
@ -44,3 +46,7 @@ class TestCompanyCountry(TransactionCase):
l10n_to_install.write({'state': 'uninstalled'})
del os.environ['COUNTRY']
self.wizard.load_company_country()
# Account is already installed, shouldn't raise
self.module_account.write({'state': 'installed'})
self.wizard.load_company_country()
Loading…
Cancel
Save