Files
app-odoo/app_mixin_name_en/models/mixin_name_en.py
Ivan Office d911f67b15 update misc
2023-09-13 04:18:03 +08:00

71 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_logger = logging.getLogger(__name__)
class MixinNameEn(models.AbstractModel):
_name = 'mixin.name.en'
_description = 'Mixin Auto english name'
# name_en_US 只要某个模型有此字段,且放在界面上,就会进行此处理
# 无此字段不处理
# 注意 res.partner 是很特殊的,继承太多,故不能用 translate=True
# 注意不能用在有继承的模型
name_en_US = fields.Char('English Name', compute='_compute_name_en_US', inverse='_inverse_name_en_US', store=True)
@api.depends('name')
def _compute_name_en_US(self):
self = self.with_context(lang='en_US')
for rec in self:
rec.name_en_US = rec.name
def _inverse_name_en_US(self):
for rec in self:
rec.with_context(lang='en_US').write({
'name': rec.name_en_US
})
# # todo: 以下处理方式不同最好直接做一个widget
# # 非开发者模式时,能显示出非英文时值,并可点击改多语种。
# # 将原 widget加 options 处理
# @api.model_create_multi
# def create(self, vals_list):
# res = super(MixinNameEn, self).create(vals_list)
# if self.env.lang == 'en_US':
# return res
#
# # todo: 这里已为了提高性能不检查。不需检查当前odoo是否有英文没英文就不给安装此模块。同时也不检查条件
# # if name_field and name_field.translate and name_field.type in ["char", "text"]:
# # # todo: 符合条件,后续为提高性能,无需做此判断
# # pass
# # else:
# # return res
# # 处理写 en
# for index, vals in enumerate(vals_list):
# name_en_US = vals.get('name_en_US')
# if name_en_US:
# try:
# res[index].with_context(lang='en_US').write(dict(name=name_en_US))
# except Exception as e:
# _logger.error('============== name_en mixin create error from name_en_US: %s' % str(e))
# return res
#
# def write(self, vals):
# res = super(MixinNameEn, self).write(vals)
# if self.env.lang == 'en_US':
# return res
#
# name_en_US = vals.get('name_en_US')
# name = vals.get('name')
# if name_en_US:
# try:
# self.with_context(lang='en_US').write(dict(name=name_en_US))
# except Exception as e:
# _logger.error('============== name_en mixin write error:%s' % str(e))
# return res