fix #I1E17T【app_base_chinese】对英文名的快速支持

fix data
This commit is contained in:
ivan deng
2020-04-11 02:42:32 +08:00
parent 1d9a994452
commit 72a5a561ab
11 changed files with 99 additions and 29 deletions

View File

@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from . import base
from . import res_partner
from . import res_currency
from . import product_category

View File

@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_logger = logging.getLogger(__name__)
class Base(models.AbstractModel):
_inherit = 'base'
# name_en_US 只要某个模型有此字段,且放在界面上,就会进行此处理
# 无此字段不处理
# todo: 为了性能,暂时不在 create 时处理
# todo: create_multi ?
# todo: 在 ir.translation 中处理以提高性能, 或反向写回
@api.model
def create(self, vals):
name_field = self._fields.get("name")
name_en_field = self._fields.get("name_en_US")
name_en_US = None
if name_field and name_field.translate and name_field.type in ["char", "text"] \
and name_en_field and name_en_field.type in["char", "text"] and 'name_en_US' in vals:
name_en_US = vals.get('name_en_US')
rec = super(Base, self).create(vals)
if name_en_US:
try:
rec.with_context(lang='en_US').name = name_en_US
except Exception as e:
pass
return rec
def write(self, vals):
name_field = self._fields.get("name")
name_en_field = self._fields.get("name_en_US")
if name_field and name_field.translate and name_field.type in ["char", "text"] \
and name_en_field and name_en_field.type in["char", "text"] and 'name_en_US' in vals:
name_en_US = vals.get('name_en_US')
if name_en_US != None:
try:
self.with_context(lang='en_US').write(dict(name=name_en_US))
except Exception as e:
pass
return super(Base, self).write(vals)

View File

@@ -8,6 +8,7 @@ class ResPartner(models.Model):
_inherit = 'res.partner'
name = fields.Char(index=True, translate=True)
name_en_US = fields.Char('English Name')
short_name = fields.Char('Short Name') # 简称
fax = fields.Char('Fax') # 简称