mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
update misc
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -5,6 +5,13 @@ from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_name = 'res.partner'
|
||||
|
||||
_inherit = 'res.partner'
|
||||
|
||||
_inherit = ['res.partner', 'mixin.name.en']
|
||||
# todo: name 不能做多语种处理,使用高频,会太耗费性能
|
||||
# 注意 res.partner 是很特殊的,继承太多,故不能用 translate=True
|
||||
# name = fields.Char(translate=True)
|
||||
|
||||
name_en_US = fields.Char('English Name')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user