zoukankan      html  css  js  c++  java
  • odoo 12.0 track_visibility = 'always' 无效

    • 原因

      • odoo12.0 对属性track_visibility 只做了非False判断, 也就是说track_visibility 属性不写False, 或者不定义这个属性,其他都为onchange
        • if getattr(field, 'track_visibility', False):
    • 解决方法修改addons/mail/models/mail_thread.py的_message_track方法为

    def _message_track(self, tracked_fields, initial):
        """ For a given record, fields to check (tuple column name, column info)
        and initial values, return a structure that is a tuple containing :
    
            - a set of updated column names
            - a list of changes (initial value, new value, column name, column info) """
        self.ensure_one()
        changes = set()  # contains always and onchange tracked fields that changed
        displays = set()  # contains always tracked field that did not change but displayed for information
        tracking_value_ids = []
        display_values_ids = []
    
        # generate tracked_values data structure: {'col_name': {col_info, new_value, old_value}}
        for col_name, col_info in tracked_fields.items():
            track_visibility = getattr(self._fields[col_name], 'track_visibility', 'onchange')
            initial_value = initial[col_name]
            new_value = getattr(self, col_name)
    
            if new_value != initial_value and (new_value or initial_value):  # because browse null != False
                track_sequence = getattr(self._fields[col_name], 'track_sequence', 100)
                tracking = self.env['mail.tracking.value'].create_tracking_values(initial_value, new_value, col_name,
                                                                                    col_info, track_sequence)
                if tracking:
                    tracking_value_ids.append([0, 0, tracking])
    
                if col_name in tracked_fields:
                    changes.add(col_name)
            # 'always' tracked fields in separate variable; added if other changes
            elif new_value == initial_value and track_visibility == 'always' and col_name in tracked_fields:
                track_sequence = getattr(self._fields[col_name], 'track_sequence', 100)
                tracking = self.env['mail.tracking.value'].create_tracking_values(initial_value, new_value, col_name,
                                                                                    col_info, track_sequence)
                if tracking:
                    display_values_ids.append([0, 0, tracking])
                    displays.add(col_name)
    
        if changes and displays:
            tracking_value_ids = display_values_ids + tracking_value_ids
    
        return changes, tracking_value_ids
    
  • 相关阅读:
    xcode12.2上运行平板IOS15.1
    发行版本崩溃,调试版本正常
    freetype安装使用
    码流的宽高和裁剪信息
    Xcode 沙盒选项
    【最新揭秘】百度快收权限如何获得,教你一周快速获得快收权限
    destoon提示http 403 forbidden解决方法
    他们口中的百度SEO快排发包参数到底是什么?
    destoon内容页调取相关内容标签
    destoon百度小程序主动推送插件
  • 原文地址:https://www.cnblogs.com/twfb/p/11434625.html
Copyright © 2011-2022 走看看