openerp
  • odoo-9
  • odoo-10
  • 2017-07-26 55 views 2 likes 
    2

    在樹視圖我告訴其中user_id說明= uid和該使用記錄:Odoo允許管理員看到所有記錄在樹視圖

    <field name="domain">[('user_id.id','=',uid)]</field> 
    

    我需要讓管理員看到所有記錄沒有域的過濾器。

    任何簡單的解決方案?

    +0

    我建議使用'ir.rule'又名訪問規則。 「sale.order」模型的odoo的'sale'模塊中有一些易於理解的示例。 – CZoellner

    回答

    2

    你可以使用下面的方法。從Python文件的行動 & 繼承搜索方法

    刪除域。

    from openerp import models,fields,api,_ 
    from openerp.exceptions import Warning 
    from openerp.osv import expression 
    from openerp import SUPERUSER_ID 
    
    class mail_message(models.Model): 
        _inherit = 'mail.message' 
    
        def _search(self, cr, uid, args, offset=0, limit=None, order=None, 
           context=None, count=False, access_rights_uid=None): 
         """ Override that adds specific access rights of mail.message, to restrict 
         messages to published messages for public users. """ 
         if uid!=SUPERUSER_ID: 
          args = expression.AND([[('user_id', '=',uid)], list(args)]) 
         return super(mail_message, self)._search(cr, uid, args, offset=offset, limit=limit, order=order, 
                   context=context, count=count, access_rights_uid=access_rights_uid)  
    

    行動時將執行_search將被調用,您可以在其中查看 如果user_id是SUPERUSER_ID那麼不添加域或添加域。

    這可能對你有幫助。

    +0

    你應該在你的類中編寫_search方法,我剛剛給出了mail.message的例子,你應該在你的類中寫下這個方法例如:test.g –

    +0

    你的例子工作正常,但它可能在前端eg。 http:// localhost:8069/mypage禁用過濾器,僅用於後端樹視圖我需要_search函數。 – Pointer

    +0

    我不清楚你的問題......你能描述一下嗎? –

    相關問題