示例#1
0
    def load_custom_module_terms(self, mods, langs):
        # 该操作耗时较长,将流程与系统原有流程分离。
        # res = super(IrTranslation, self).load_module_terms(modules, langs)

        mod_dict = {
            mod.name: mod.dependencies_id.mapped('name')
            for mod in mods
        }
        modules = topological_sort(mod_dict)

        res_lang = self.env['res.lang'].sudo()
        for lang in langs:
            res_lang.load_lang(lang)
        for module_name in modules:
            modpath = get_module_path(module_name)
            if not modpath:
                continue
            for lang in langs:
                context = dict(self._context)
                lang_code = tools.get_iso_codes(lang)
                lmch_extra_file = get_lmch_extra_file(module_name, lang_code)
                if lmch_extra_file:
                    _logger.info(
                        u'模块 %s: loading lmch extra translation file (%s) for language %s',
                        module_name, lang_code, lang)
                    tools.trans_load(self._cr,
                                     lmch_extra_file,
                                     lang,
                                     verbose=False,
                                     module_name=module_name,
                                     context=context)
        return True
示例#2
0
文件: module.py 项目: Badeea-center/1
    def _update_translations(self, filter_lang=None):
        if not filter_lang:
            langs = self.env['res.lang'].search([('translatable', '=', True)])
            filter_lang = [lang.code for lang in langs]
        elif not isinstance(filter_lang, (list, tuple)):
            filter_lang = [filter_lang]

        update_mods = self.filtered(lambda r: r.state in ('installed', 'to install', 'to upgrade'))
        mod_dict = {
            mod.name: mod.dependencies_id.mapped('name')
            for mod in update_mods
        }
        mod_names = topological_sort(mod_dict)
        self.env['ir.translation'].load_module_terms(mod_names, filter_lang)
示例#3
0
文件: ir_module.py 项目: Vauxoo/odoo
    def _update_translations(self, filter_lang=None):
        if not filter_lang:
            langs = self.env['res.lang'].search([('translatable', '=', True)])
            filter_lang = [lang.code for lang in langs]
        elif not isinstance(filter_lang, (list, tuple)):
            filter_lang = [filter_lang]

        update_mods = self.filtered(lambda r: r.state in ('installed', 'to install', 'to upgrade'))
        mod_dict = {
            mod.name: mod.dependencies_id.mapped('name')
            for mod in update_mods
        }
        mod_names = topological_sort(mod_dict)
        self.env['ir.translation'].load_module_terms(mod_names, filter_lang)
示例#4
0
    def _update_translations(self, filter_lang=None, overwrite=False):
        if not filter_lang:
            langs = self.env['res.lang'].get_installed()
            filter_lang = [code for code, _ in langs]
        elif not isinstance(filter_lang, (list, tuple)):
            filter_lang = [filter_lang]

        update_mods = self.filtered(lambda r: r.state in ('installed', 'to install', 'to upgrade'))
        mod_dict = {
            mod.name: mod.dependencies_id.mapped('name')
            for mod in update_mods
        }
        mod_names = topological_sort(mod_dict)
        self.env['ir.translation']._load_module_terms(mod_names, filter_lang, overwrite)
示例#5
0
    def _topological_sort(self, addons_tuple):
        """Returns a list of sorted modules name accord to the spec in ir.module.module
        that is, application desc, sequence, name then topologically sorted"""
        IrModule = self.env['ir.module.module']

        def mapper(addon):
            manif = odoo.modules.module.get_manifest(addon)
            from_terp = IrModule.get_values_from_terp(manif)
            from_terp['name'] = addon
            from_terp['depends'] = manif.get('depends', ['base'])
            return from_terp

        manifs = map(mapper, addons_tuple)

        def sort_key(manif):
            return (not manif['application'], int(manif['sequence']), manif['name'])

        manifs = sorted(manifs, key=sort_key)

        return misc.topological_sort({manif['name']: manif['depends'] for manif in manifs})
示例#6
0
# '%Y-%m-%d %H:%M:%S'

flat_list = misc.flatten([[['a', 'b'], 'c'], 'd', [], ['e', [], 'f']])
# ['a', 'b', 'c', 'd', 'e', 'f']

for num, el in misc.reverse_enumerate(['a', 'b', 'c', 'd']):
    print(num, el)
    # 3 d
    # 2 c
    # 1 b
    # 0 a

misc.topological_sort({
    'a': ['b', 'c'],
    'b': ['c'],
    'd': ['a'],
    'r': ['y'],
    'y': ['z']
})
# ['b', 'a', 'd', 'y', 'r']

misc.scan_languages()
# [('sq_AL', 'Albanian / Shqip'),
#  ('am_ET', 'Amharic / አምሃርኛ'),
#  ('ar_SY', 'Arabic / الْعَرَبيّة'),
#  ('eu_ES', 'Basque / Euskara'),
#  ('bs_BA', 'Bosnian / bosanski jezik'),
#
#  ..]

misc.human_size(1024 * 10)