Add web_fix_modules_load

This commit is contained in:
Simone Orsi
2022-10-04 18:38:01 +02:00
parent 795ef060fe
commit 119c67e976
14 changed files with 272 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
from . import ir_module
from . import ir_translation

View File

@@ -0,0 +1,20 @@
# Copyright 2022 Camptocamp SA
# @author Simone Orsi <simahawk@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import json
from odoo import models
from odoo.addons.web.controllers.main import module_boot
class IrModule(models.Model):
_inherit = "ir.module.module"
def _session_modules_info(self):
"""Load modules info and return their mapping."""
module_names = module_boot(self.env.cr.dbname)
modules = self.sudo().search([("name", "in", module_names)])
data = {mod.name: {"id": mod.id} for mod in modules}
return json.dumps(data)

View File

@@ -0,0 +1,17 @@
# Copyright 2022 Camptocamp SA
# @author Simone Orsi <simahawk@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class IrTranslation(models.Model):
_inherit = "ir.translation"
def get_translations_for_webclient(self, mods, lang):
# Intercept call to load translations from modules' ids instead of names.
if mods and isinstance(mods[0], int):
model = self.env["ir.module.module"].sudo()
mods = model.browse(mods).mapped("name")
return super().get_translations_for_webclient(mods, lang)