3
0
Fork 0
web_techsystech/web_translate_dialog/models/base.py

38 lines
1.3 KiB
Python

# Copyright 2019 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from odoo import models
class BaseModel(models.BaseModel):
_inherit = "base"
def get_field_translations(self, field_names):
"""Get only the existing translations for specified field
:param field_name: Name of the field
:return: dict of
{self.id: {'lang_code': {'field_name':ir.translation,value}}
"""
read_res = self.with_context(lang="en_US").read(fields=field_names)
res = {}
for rec in read_res:
rec_id = rec.get("id")
del rec["id"]
res[rec_id] = {"en_US": rec}
for rec_id, values in res.items():
for name in field_names:
tr_read_res = self.env["ir.translation"].search_read(
[
("name", "=", "{},{}".format(self._name, name)),
("res_id", "=", rec_id),
("lang", "!=", "en_US"),
]
)
for tr_res in tr_read_res:
if not tr_res.get("lang") in values:
values[tr_res.get("lang")] = {}
values[tr_res.get("lang")][name] = tr_res.get("value")
return res