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.
 
 
 

50 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.AbstractModel):
_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(_(
'COUNTRY environment variable with country code is not '
'set and no localization module is marked to be '
'installed.'))
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 was not found. Please use a valid two-letter '
'ISO 3166 code.'))
self.env.ref('base.main_company').write({'country_id': country.id})