From 10b3a950cd987f53f6d6762ece9f43f057655b6c Mon Sep 17 00:00:00 2001 From: ivan deng Date: Sat, 9 Oct 2021 15:34:33 +0800 Subject: [PATCH] fix bg color --- app_common/models/__init__.py | 2 - app_common/models/fields.py | 49 ----------------- app_common/models/ir_ui_view.py | 25 --------- app_common/models/validator_old.py | 78 ---------------------------- app_common/models/view_validation.py | 63 ---------------------- app_common/rng/common.rng | 4 +- app_common/rng/search_view.rng | 13 ----- 7 files changed, 2 insertions(+), 232 deletions(-) delete mode 100644 app_common/models/fields.py delete mode 100644 app_common/models/validator_old.py delete mode 100644 app_common/models/view_validation.py diff --git a/app_common/models/__init__.py b/app_common/models/__init__.py index cbd3a54e..4458ab01 100644 --- a/app_common/models/__init__.py +++ b/app_common/models/__init__.py @@ -23,8 +23,6 @@ # description: from . import base -from . import fields -from . import view_validation from . import ir_ui_view from . import ir_cron from . import res_users diff --git a/app_common/models/fields.py b/app_common/models/fields.py deleted file mode 100644 index d0149013..00000000 --- a/app_common/models/fields.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- - -from odoo.fields import Field, resolve_mro -from odoo.fields import Selection as oldSelection -from odoo.tools import merge_sequences -import logging - -_logger = logging.getLogger(__name__) - -# 此处用猴子补丁,热更新,不影响后续继承 -class Selection(Field): - def _setup_attrs_app(self, model, name): - Field._setup_attrs(self, model, name) - - # determine selection (applying 'selection_add' extensions) - values = None - labels = {} - - for field in reversed(resolve_mro(model, name, self._can_setup_from)): - # We cannot use field.selection or field.selection_add here - # because those attributes are overridden by ``_setup_attrs``. - if 'selection' in field.args: - selection = field.args['selection'] - if isinstance(selection, list): - if ( - values is not None - and values != [kv[0] for kv in selection] - ): - _logger.debug("%s: selection=%r overrides existing selection; use selection_add instead", self, selection) - values = [kv[0] for kv in selection] - labels = dict(selection) - else: - self.selection = selection - values = None - labels = {} - - if 'selection_add' in field.args: - selection_add = field.args['selection_add'] - assert isinstance(selection_add, list), \ - "%s: selection_add=%r must be a list" % (self, selection_add) - assert values is not None, \ - "%s: selection_add=%r on non-list selection %r" % (self, selection_add, self.selection) - values = merge_sequences(values, [kv[0] for kv in selection_add]) - labels.update(kv for kv in selection_add if len(kv) == 2) - - if values is not None: - self.selection = [(value, labels[value]) for value in values] - -oldSelection._setup_attrs = Selection._setup_attrs_app \ No newline at end of file diff --git a/app_common/models/ir_ui_view.py b/app_common/models/ir_ui_view.py index a864de21..fe70389f 100644 --- a/app_common/models/ir_ui_view.py +++ b/app_common/models/ir_ui_view.py @@ -10,14 +10,6 @@ from lxml import etree import logging _logger = logging.getLogger(__name__) -@validate('tree') -def app_valid_field_in_tree(arch, **kwargs): - # 增加 header - return all( - child.tag in ('field', 'button', 'control', 'groupby', 'header') - for child in arch.xpath('/tree/*') - ) - def app_relaxng(view_type): """ Return a validator for the given view type, or None. """ if view_type not in _relaxng_cache: @@ -35,21 +27,6 @@ def app_relaxng(view_type): _relaxng_cache[view_type] = None return _relaxng_cache[view_type] -def app_reset_valid_view(view_type): - _relaxng_cache = view_validation._relaxng_cache - for pred in _validators[view_type]: - # 要pop掉函数 valid_field_in_tree - if pred.__name__ == 'valid_field_in_tree': - _validators[view_type].remove(pred) - try: - _relaxng_cache.pop(view_type, None) - _relaxng_cache[view_type] = None - except Exception: - pass - _relaxng_cache[view_type] = app_relaxng(view_type) - -app_reset_valid_view('tree') -view_validation.valid_field_in_tree = app_valid_field_in_tree view_validation.relaxng = app_relaxng class View(models.Model): @@ -58,8 +35,6 @@ class View(models.Model): def __init__(self, *args, **kwargs): super(View, self).__init__(*args, **kwargs) view_validation.relaxng = app_relaxng - # 重置 tree - app_reset_valid_view('tree') # todo: 有可能需要处理增加的 header等标签 # 直接重写原生方法 diff --git a/app_common/models/validator_old.py b/app_common/models/validator_old.py deleted file mode 100644 index ed6ae118..00000000 --- a/app_common/models/validator_old.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- - -from odoo import tools, _ -from odoo.modules.module import get_resource_path -from odoo.tools import view_validation -from odoo.tools.view_validation import validate, _validators -from lxml import etree -import logging - - -_logger = logging.getLogger(__name__) - -_relaxng_cache = view_validation._relaxng_cache -_relaxng_cache['tree'] = None -with tools.file_open(get_resource_path('app_common', 'rng', 'tree_view.rng')) as frng: - try: - text = frng.read() - # with tools.file_open('addons/base/rng/common.rng') as common_rng: - # common_txt = common_rng.read() - # start_pos = common_txt.find('', start_pos) - # end_pos = common_txt.find('') - # common_content = common_txt[start_pos + 1: end_pos] - # - # # 从14中学习,最新 common - # # - # old_content = ''' - # - # ''' - # new_content = ''' - # - # - # - # - # - # - # - # - # - # - # - # - # - # ''' - # common_content = common_content.replace(old_content, new_content) - # # common 替代 - # text = text.replace('', common_content) - # # tree 替代 - # old_content = '''''' - # new_content = ''' - # - # - # - # - # ''' - # text = text.replace(old_content, new_content) - # # 增加 fx_tree_table 支持 - # text = text.replace('', - # '') - - tmp_doc = etree.fromstring(text.encode('utf-8')) - _relaxng_cache['tree'] = etree.RelaxNG(tmp_doc) - _logger.warning('=========new tree done: %s' % _relaxng_cache['tree']) - except Exception as error: - _logger.exception('Failed to load RelaxNG XML schema for views validation, {error}'.format( - error=error)) - _relaxng_cache['tree'] = None - - -@validate('tree') -def app_valid_field_in_tree(arch, **kwargs): - # 增加 header - return all( - child.tag in ('field', 'button', 'control', 'groupby', 'header') - for child in arch.xpath('/tree/*') - ) - -view_validation.valid_field_in_tree = app_valid_field_in_tree diff --git a/app_common/models/view_validation.py b/app_common/models/view_validation.py deleted file mode 100644 index e6bac36e..00000000 --- a/app_common/models/view_validation.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- - -import ast -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_symbols -import logging - -_logger = logging.getLogger(__name__) - -ATTRS_WITH_FIELD_NAMES2 = { - 'context', - 'domain', - 'decoration-bf', - 'decoration-it', - 'decoration-danger', - 'decoration-info', - 'decoration-muted', - 'decoration-primary', - 'decoration-success', - 'decoration-warning', - 'decoration-black', - 'decoration-white', - 'bg-danger', - 'bg-info', - 'bg-muted', - 'bg-primary', - 'bg-success', - 'bg-warning', - 'bg-black', - 'bg-white', -} - -def app_get_attrs_field_names(env, arch, model, editable): - symbols = _get_attrs_symbols() | {None} - result = [] - - 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(): - if not val: - continue - if key in ATTRS_WITH_FIELD_NAMES2: - process_expr(val, get, key, val) - - res = old_gafn(env, arch, model, editable) - add_bg(arch, model, editable) - res += result - return res - -# 使用猴子补丁方式更新 -view_validation.get_attrs_field_names = app_get_attrs_field_names diff --git a/app_common/rng/common.rng b/app_common/rng/common.rng index 5aff83fc..e8ba5105 100644 --- a/app_common/rng/common.rng +++ b/app_common/rng/common.rng @@ -268,7 +268,6 @@ - @@ -287,6 +286,7 @@ + @@ -348,6 +348,7 @@ + @@ -421,7 +422,6 @@ - diff --git a/app_common/rng/search_view.rng b/app_common/rng/search_view.rng index 69a03bfc..d1025251 100644 --- a/app_common/rng/search_view.rng +++ b/app_common/rng/search_view.rng @@ -19,18 +19,6 @@ - - - - - - - - - - - - @@ -44,7 +32,6 @@ -