update common

This commit is contained in:
ivan deng
2021-08-06 06:48:28 +08:00
parent 8933e59bf0
commit 40ab2bd157
5 changed files with 31 additions and 5 deletions

View File

@@ -33,7 +33,7 @@
{ {
'name': "Sunpop Odooapp Common Func", 'name': "Sunpop Odooapp Common Func",
'version': '13.21.08.03', 'version': '13.21.06.13',
'author': 'Sunpop.cn', 'author': 'Sunpop.cn',
'category': 'Base', 'category': 'Base',
'website': 'https://www.sunpop.cn', 'website': 'https://www.sunpop.cn',

View File

@@ -22,7 +22,7 @@ def app_relaxng(view_type):
""" Return a validator for the given view type, or None. """ """ Return a validator for the given view type, or None. """
if view_type not in _relaxng_cache: if view_type not in _relaxng_cache:
# tree, search 特殊 # tree, search 特殊
if view_type in ['tree', 'search']: if view_type in ['tree', 'search', 'pivot']:
_file = get_resource_path('app_common', 'rng', '%s_view.rng' % view_type) _file = get_resource_path('app_common', 'rng', '%s_view.rng' % view_type)
else: else:
_file = get_resource_path('base', 'rng', '%s_view.rng' % view_type) _file = get_resource_path('base', 'rng', '%s_view.rng' % view_type)

View File

@@ -3,6 +3,7 @@
import ast import ast
from odoo.tools import view_validation from odoo.tools import view_validation
from odoo.tools.view_validation import get_attrs_field_names as old_gafn from odoo.tools.view_validation import get_attrs_field_names as old_gafn
from odoo.tools.view_validation import _get_attrs_symbols
import logging import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@@ -18,25 +19,42 @@ ATTRS_WITH_FIELD_NAMES2 = {
'decoration-primary', 'decoration-primary',
'decoration-success', 'decoration-success',
'decoration-warning', 'decoration-warning',
'decoration-black',
'decoration-white',
'bg-danger', 'bg-danger',
'bg-info', 'bg-info',
'bg-muted', 'bg-muted',
'bg-primary', 'bg-primary',
'bg-success', 'bg-success',
'bg-warning', 'bg-warning',
'bg-black',
'bg-white',
} }
def app_get_attrs_field_names(env, arch, model, editable): def app_get_attrs_field_names(env, arch, model, editable):
symbols = _get_attrs_symbols() | {None}
result = [] result = []
def add_bg(node, model, editable, get=old_gafn.get_name): def get_name(node):
""" return the name from an AST node, or None """
if isinstance(node, ast.Name):
return node.id
def process_expr(expr, get, key, val):
""" parse `expr` and collect triples """
for node in ast.walk(ast.parse(expr.strip(), mode='eval')):
name = get(node)
if name not in symbols:
result.append((name, key, val))
def add_bg(node, model, editable, get=get_name):
for key, val in node.items(): for key, val in node.items():
if not val: if not val:
continue continue
if key in ATTRS_WITH_FIELD_NAMES2: if key in ATTRS_WITH_FIELD_NAMES2:
old_gafn.process_expr(val, get, key, val) process_expr(val, get, key, val)
res = old_gafn(arch, model, editable) res = old_gafn(env, arch, model, editable)
add_bg(arch, model, editable) add_bg(arch, model, editable)
res += result res += result
return res return res

View File

@@ -277,12 +277,16 @@
<rng:optional><rng:attribute name="decoration-primary"/></rng:optional> <rng:optional><rng:attribute name="decoration-primary"/></rng:optional>
<rng:optional><rng:attribute name="decoration-success"/></rng:optional> <rng:optional><rng:attribute name="decoration-success"/></rng:optional>
<rng:optional><rng:attribute name="decoration-warning"/></rng:optional> <rng:optional><rng:attribute name="decoration-warning"/></rng:optional>
<rng:optional><rng:attribute name="decoration-black"/></rng:optional>
<rng:optional><rng:attribute name="decoration-white"/></rng:optional>
<rng:optional><rng:attribute name="bg-danger"/></rng:optional> <rng:optional><rng:attribute name="bg-danger"/></rng:optional>
<rng:optional><rng:attribute name="bg-info"/></rng:optional> <rng:optional><rng:attribute name="bg-info"/></rng:optional>
<rng:optional><rng:attribute name="bg-muted"/></rng:optional> <rng:optional><rng:attribute name="bg-muted"/></rng:optional>
<rng:optional><rng:attribute name="bg-primary"/></rng:optional> <rng:optional><rng:attribute name="bg-primary"/></rng:optional>
<rng:optional><rng:attribute name="bg-success"/></rng:optional> <rng:optional><rng:attribute name="bg-success"/></rng:optional>
<rng:optional><rng:attribute name="bg-warning"/></rng:optional> <rng:optional><rng:attribute name="bg-warning"/></rng:optional>
<rng:optional><rng:attribute name="bg-black"/></rng:optional>
<rng:optional><rng:attribute name="bg-white"/></rng:optional>
<rng:optional> <rng:optional>
<rng:attribute name="force_save"> <rng:attribute name="force_save">
<rng:choice> <rng:choice>

View File

@@ -46,12 +46,16 @@
<rng:optional><rng:attribute name="decoration-primary"/></rng:optional> <rng:optional><rng:attribute name="decoration-primary"/></rng:optional>
<rng:optional><rng:attribute name="decoration-success"/></rng:optional> <rng:optional><rng:attribute name="decoration-success"/></rng:optional>
<rng:optional><rng:attribute name="decoration-warning"/></rng:optional> <rng:optional><rng:attribute name="decoration-warning"/></rng:optional>
<rng:optional><rng:attribute name="decoration-black"/></rng:optional>
<rng:optional><rng:attribute name="decoration-white"/></rng:optional>
<rng:optional><rng:attribute name="bg-danger"/></rng:optional> <rng:optional><rng:attribute name="bg-danger"/></rng:optional>
<rng:optional><rng:attribute name="bg-info"/></rng:optional> <rng:optional><rng:attribute name="bg-info"/></rng:optional>
<rng:optional><rng:attribute name="bg-muted"/></rng:optional> <rng:optional><rng:attribute name="bg-muted"/></rng:optional>
<rng:optional><rng:attribute name="bg-primary"/></rng:optional> <rng:optional><rng:attribute name="bg-primary"/></rng:optional>
<rng:optional><rng:attribute name="bg-success"/></rng:optional> <rng:optional><rng:attribute name="bg-success"/></rng:optional>
<rng:optional><rng:attribute name="bg-warning"/></rng:optional> <rng:optional><rng:attribute name="bg-warning"/></rng:optional>
<rng:optional><rng:attribute name="bg-black"/></rng:optional>
<rng:optional><rng:attribute name="bg-white"/></rng:optional>
<rng:optional><rng:attribute name="banner_route"/></rng:optional> <rng:optional><rng:attribute name="banner_route"/></rng:optional>
<rng:optional><rng:attribute name="sample"/></rng:optional> <rng:optional><rng:attribute name="sample"/></rng:optional>
<rng:optional> <rng:optional>