[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
parent
dfddcba2bb
commit
8e0d78ea80
|
@ -80,6 +80,7 @@ Contributors
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
* Moisés López <moylop260@vauxoo.com>
|
* Moisés López <moylop260@vauxoo.com>
|
||||||
|
* Luis González <lgonzalez@vauxoo.com>
|
||||||
|
|
||||||
Other credits
|
Other credits
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
{
|
{
|
||||||
"name": "Company Country",
|
"name": "Company Country",
|
||||||
"summary": "Set country to main company",
|
"summary": "Set country to main company",
|
||||||
"version": "13.0.1.0.0",
|
"version": "13.0.1.0.1",
|
||||||
"category": "base",
|
"category": "base",
|
||||||
"website": "https://github.com/OCA/server-tools/tree/13.0/company_country",
|
"website": "https://github.com/OCA/server-tools/tree/13.0/company_country",
|
||||||
"maintainers": ["moylop260"],
|
"maintainers": ["moylop260", "luisg123v"],
|
||||||
"author": "Vauxoo, Odoo Community Association (OCA)",
|
"author": "Vauxoo, Odoo Community Association (OCA)",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"depends": [],
|
"depends": [],
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
# Copyright 2016 Vauxoo
|
# Copyright 2016 Vauxoo
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from odoo import _, api, models
|
from odoo import _, api, models
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CompanyCountryConfigSettings(models.TransientModel):
|
class CompanyCountryConfigSettings(models.TransientModel):
|
||||||
_name = "company.country.config.settings"
|
_name = "company.country.config.settings"
|
||||||
|
@ -12,10 +15,19 @@ class CompanyCountryConfigSettings(models.TransientModel):
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def load_company_country(self, country_code=None):
|
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:
|
if not country_code:
|
||||||
country_code = os.environ.get("COUNTRY")
|
country_code = os.environ.get("COUNTRY")
|
||||||
if country_code == "":
|
if country_code == "":
|
||||||
self.env.ref("base.main_company").write({"country_id": None})
|
self.env.ref("base.main_company").write({"country_id": False})
|
||||||
return
|
return
|
||||||
if not country_code:
|
if not country_code:
|
||||||
l10n_to_install = self.env["ir.module.module"].search(
|
l10n_to_install = self.env["ir.module.module"].search(
|
||||||
|
|
|
@ -14,7 +14,9 @@ class TestCompanyCountry(TransactionCase):
|
||||||
self.us_country = self.env.ref("base.us")
|
self.us_country = self.env.ref("base.us")
|
||||||
self.mx_country = self.env.ref("base.mx")
|
self.mx_country = self.env.ref("base.mx")
|
||||||
self.main_company = self.env.ref("base.main_company")
|
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.main_company.write({"country_id": self.us_country.id})
|
||||||
|
self.module_account.write({"state": "uninstalled"})
|
||||||
self.env_country = os.environ.get("COUNTRY")
|
self.env_country = os.environ.get("COUNTRY")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
@ -51,3 +53,7 @@ class TestCompanyCountry(TransactionCase):
|
||||||
)
|
)
|
||||||
l10n_to_install.write({"state": "uninstalled"})
|
l10n_to_install.write({"state": "uninstalled"})
|
||||||
self.wizard.load_company_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…
Reference in New Issue