mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
# -*- 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 只要某个模型有此字段,且放在界面上,就会进行此处理
|
||
# 无此字段不处理
|
||
|
||
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
|