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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM