[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>
pull/1805/head
Luis González [Vauxoo] 2020-03-16 13:44:28 -06:00 committed by Luis González
parent dfddcba2bb
commit 8e0d78ea80
4 changed files with 22 additions and 3 deletions

View File

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

View File

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

View File

@ -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,19 @@ 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(

View File

@ -14,7 +14,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):
@ -51,3 +53,7 @@ class TestCompanyCountry(TransactionCase):
)
l10n_to_install.write({"state": "uninstalled"})
self.wizard.load_company_country()
# Account is already installed, shouldn't raise
self.module_account.write({"state": "installed"})
self.wizard.load_company_country()