odoo开发笔记--字段追踪,消息通知机制

odoo有着强大的消息记录、通知机制;

实际开发中,常常会有客户的需求,页面上form视图中的某些字段不允许反复修改,

假如有的用户修改了,恶意搞坏,往往容易给公司利益造成损失,或破坏,那么如何有效的记录相关用户的操作,

提供一定的安全审计功能?

别担心,odoo已经为我们考虑到了!!!

下面我们就来介绍下,

首先,先保证整体基本的消息记录功能,两个地方需要修改,模型和form视图

在你需要消息记录的模型申明中,添加如下红色部分代码:

class TestModle(models.Model):
    """ 模型名称 """
    _name = 'test.test_model'    # 定义 模型名(类名)   必写
    _rec_name = 'name'           # 定义 模型引用时 显示的默认字段  非必写
    _description = 'test model'  # 定义数据库中的表名  非必写
    _inherit = ['mail.thread', 'ir.needaction_mixin']  # 集成消息模型 增加消息记录通知功能  

在相应的form视图内部下方,增加如下红色代码:

<form>
   ....
   省略一串代码
   ....
    <div class="oe_chatter">
        <field name="message_follower_ids"
               widget="mail_followers"/>
        <field name="message_ids" widget="mail_thread"/>
    </div>
</form>

然后在想要追踪的字段的模型定义中增加如下属性:

class TestModle(models.Model):
    """ 模型名称 """
    _name = 'test.test_model'    # 定义 模型名(类名)   必写
    _rec_name = 'name'           # 定义 模型引用时 显示的默认字段  非必写
    _description = 'test model'  # 定义数据库中的表名  非必写
    _inherit = ['mail.thread', 'ir.needaction_mixin']  # 集成消息模型 增加消息记录通知功能  

    name = fields.Char(string="Name",)
    inout = fields.Selection(string="InOut", selection=[('I', u'进口'), ('E', u'出口'), ], track_visibility='always',)
    contract_no = fields.Char(string="Contract No", track_visibility='onchange',)

上面的两种写法:track_visibility='always' 和 track_visibility='onchange'

修改完成之后,重启odoo服务,升级相应模块!对上述字段进行手动修改,保存的时候,验证效果!!!

实现效果:

 

感兴趣的小伙伴,可以参考:

https://www.jianshu.com/p/84c6518d7dbf

 

posted @ 2018-02-02 17:44  hello-Jesson  阅读(4122)  评论(0编辑  收藏  举报