# This file is part of Tryton.  The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.cache import Cache
from trytond.config import config
from trytond.model import ModelSingleton, ModelSQL, fields


class Configuration(ModelSingleton, ModelSQL):
    'Configuration'
    __name__ = 'ir.configuration'
    language = fields.Char('language')
    hostname = fields.Char("Hostname", strip=False)
    _get_language_cache = Cache('ir_configuration.get_language')

    @staticmethod
    def default_language():
        return config.get('database', 'language')

    @classmethod
    def get_language(cls):
        language = cls._get_language_cache.get(None)
        if language is not None:
            return language
        language = cls(1).language
        if not language:
            language = config.get('database', 'language')
        cls._get_language_cache.set(None, language)
        return language

    def check(self):
        "Check configuration coherence on pool initialisation"
        pass

    @classmethod
    def create(cls, vlist):
        records = super().create(vlist)
        cls._get_language_cache.clear()
        return records

    @classmethod
    def write(cls, *args):
        super().write(*args)
        cls._get_language_cache.clear()

    @classmethod
    def delete(cls, records):
        super().delete(records)
        cls._get_language_cache.clear()
