update misc

This commit is contained in:
Ivan Office
2023-09-13 04:18:03 +08:00
parent 4f1539c2a1
commit d911f67b15
5 changed files with 67 additions and 46 deletions

View File

@@ -13,44 +13,58 @@ class MixinNameEn(models.AbstractModel):
# name_en_US 只要某个模型有此字段,且放在界面上,就会进行此处理
# 无此字段不处理
name_en_US = fields.Char('English Name')
# 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
# 注意 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