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:
@@ -5,4 +5,4 @@ from .hooks import post_init_hook
|
|||||||
from . import controllers
|
from . import controllers
|
||||||
from . import models
|
from . import models
|
||||||
from . import ir
|
from . import ir
|
||||||
from . import res
|
from . import res
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
'live_test_url': 'https://demo.odooapp.cn',
|
'live_test_url': 'https://demo.odooapp.cn',
|
||||||
'license': 'OPL-1',
|
'license': 'OPL-1',
|
||||||
'sequence': 2,
|
'sequence': 2,
|
||||||
'price': 98.00,
|
'price': 18.00,
|
||||||
'currency': 'EUR',
|
'currency': 'EUR',
|
||||||
'images': ['static/description/banner.png'],
|
'images': ['static/description/banner.png'],
|
||||||
'summary': '''
|
'summary': '''
|
||||||
|
|||||||
@@ -13,44 +13,58 @@ class MixinNameEn(models.AbstractModel):
|
|||||||
|
|
||||||
# name_en_US 只要某个模型有此字段,且放在界面上,就会进行此处理
|
# name_en_US 只要某个模型有此字段,且放在界面上,就会进行此处理
|
||||||
# 无此字段不处理
|
# 无此字段不处理
|
||||||
|
# 注意 res.partner 是很特殊的,继承太多,故不能用 translate=True
|
||||||
name_en_US = fields.Char('English Name')
|
# 注意不能用在有继承的模型
|
||||||
|
|
||||||
# todo: 以下处理方式不同,最好直接做一个widget,
|
name_en_US = fields.Char('English Name', compute='_compute_name_en_US', inverse='_inverse_name_en_US', store=True)
|
||||||
# 非开发者模式时,能显示出非英文时值,并可点击改多语种。
|
|
||||||
# 将原 widget加 options 处理
|
@api.depends('name')
|
||||||
@api.model_create_multi
|
def _compute_name_en_US(self):
|
||||||
def create(self, vals_list):
|
self = self.with_context(lang='en_US')
|
||||||
res = super(MixinNameEn, self).create(vals_list)
|
for rec in self:
|
||||||
if self.env.lang == 'en_US':
|
rec.name_en_US = rec.name
|
||||||
return res
|
|
||||||
|
def _inverse_name_en_US(self):
|
||||||
# todo: 这里已为了提高性能不检查。不需检查当前odoo是否有英文,没英文就不给安装此模块。同时也不检查条件
|
for rec in self:
|
||||||
# if name_field and name_field.translate and name_field.type in ["char", "text"]:
|
rec.with_context(lang='en_US').write({
|
||||||
# # todo: 符合条件,后续为提高性能,无需做此判断
|
'name': rec.name_en_US
|
||||||
# pass
|
})
|
||||||
# else:
|
|
||||||
# return res
|
# # todo: 以下处理方式不同,最好直接做一个widget,
|
||||||
# 处理写 en
|
# # 非开发者模式时,能显示出非英文时值,并可点击改多语种。
|
||||||
for index, vals in enumerate(vals_list):
|
# # 将原 widget加 options 处理
|
||||||
name_en_US = vals.get('name_en_US')
|
# @api.model_create_multi
|
||||||
if name_en_US:
|
# def create(self, vals_list):
|
||||||
try:
|
# res = super(MixinNameEn, self).create(vals_list)
|
||||||
res[index].with_context(lang='en_US').write(dict(name=name_en_US))
|
# if self.env.lang == 'en_US':
|
||||||
except Exception as e:
|
# return res
|
||||||
_logger.error('============== name_en mixin create error from name_en_US: %s' % str(e))
|
#
|
||||||
return res
|
# # todo: 这里已为了提高性能不检查。不需检查当前odoo是否有英文,没英文就不给安装此模块。同时也不检查条件
|
||||||
|
# # if name_field and name_field.translate and name_field.type in ["char", "text"]:
|
||||||
def write(self, vals):
|
# # # todo: 符合条件,后续为提高性能,无需做此判断
|
||||||
res = super(MixinNameEn, self).write(vals)
|
# # pass
|
||||||
if self.env.lang == 'en_US':
|
# # else:
|
||||||
return res
|
# # return res
|
||||||
|
# # 处理写 en
|
||||||
name_en_US = vals.get('name_en_US')
|
# for index, vals in enumerate(vals_list):
|
||||||
name = vals.get('name')
|
# name_en_US = vals.get('name_en_US')
|
||||||
if name_en_US:
|
# if name_en_US:
|
||||||
try:
|
# try:
|
||||||
self.with_context(lang='en_US').write(dict(name=name_en_US))
|
# res[index].with_context(lang='en_US').write(dict(name=name_en_US))
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
_logger.error('============== name_en mixin write error:%s' % str(e))
|
# _logger.error('============== name_en mixin create error from name_en_US: %s' % str(e))
|
||||||
return res
|
# 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):
|
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')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<field name="model">res.partner</field>
|
<field name="model">res.partner</field>
|
||||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//field[@name='type']" position="after">
|
<xpath expr="//span[@name='address_name']" position="before">
|
||||||
<!-- todo: 在英文环境不显示,xml中可以直接调 env。或者是在原widget中加options,如果无值时则显示同样的 name-->
|
<!-- todo: 在英文环境不显示,xml中可以直接调 env。或者是在原widget中加options,如果无值时则显示同样的 name-->
|
||||||
<field name="name_en_US" place_holder="Default same as name, Input to set other"/>
|
<field name="name_en_US" place_holder="Default same as name, Input to set other"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|||||||
Reference in New Issue
Block a user