You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

48 lines
2.0 KiB

# 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'
_description = 'Company Country Configuration Settings'
@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': False})
return
if not country_code:
l10n_to_install = self.env['ir.module.module'].search([
('state', '=', 'to install'),
('name', '=like', 'l10n_%')], limit=1)
if not l10n_to_install:
raise ValidationError(
_('Error COUNTRY environment variable with country code '
'not defined and no localization found in pool.'))
country_code = l10n_to_install.name.split('l10n_')[1][:2].upper()
country = self.env['res.country'].search([
('code', 'ilike', country_code)], limit=1)
if not country:
raise ValidationError(
_('Country code %s not found. Use ISO 3166 codes 2 letters'))
self.env.ref('base.main_company').write({'country_id': country.id})