mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
# -*- 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)
|