mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 10:12:05 +02:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
# Copyright 2024 Quartile Limited
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
import re
|
|
|
|
from markupsafe import Markup
|
|
|
|
from odoo import api, models
|
|
from odoo.tools.profiler import QwebTracker
|
|
|
|
|
|
class IrQWeb(models.AbstractModel):
|
|
_inherit = "ir.qweb"
|
|
|
|
@QwebTracker.wrap_render
|
|
@api.model
|
|
def _render(self, template, values=None, **options):
|
|
result = super()._render(template, values=values, **options)
|
|
if not isinstance(template, str):
|
|
return result
|
|
result_str = str(result)
|
|
lang_code = "en_US"
|
|
request = values.get("request")
|
|
if request:
|
|
# For views
|
|
lang_code = request.env.lang
|
|
else:
|
|
# For reports
|
|
lang_match = re.search(r'data-oe-lang="([^"]+)"', result_str)
|
|
if lang_match:
|
|
lang_code = lang_match.group(1)
|
|
view = self.env["ir.ui.view"]._get(template)
|
|
content_mappings = (
|
|
self.env["template.content.mapping"]
|
|
.sudo()
|
|
.search(
|
|
[
|
|
("template_id", "=", view.id),
|
|
"|",
|
|
("lang", "=", lang_code),
|
|
("lang", "=", False),
|
|
]
|
|
)
|
|
)
|
|
if content_mappings:
|
|
for mapping in content_mappings:
|
|
content_from = mapping.content_from
|
|
content_to = mapping.content_to or ""
|
|
result_str = result_str.replace(content_from, content_to)
|
|
result = Markup(result_str)
|
|
return result
|