2014-05-19 57 views
0

我使用時間表模塊設置了OpenERP 7.0,我希望任何用戶在編寫時間表時都能看到分配給他的項目,使用部分My timesheet如何限制OpenERP「我的時間表」項目列表?

我的問題是,當我登錄的用戶,在My timesheet>標籤Summary,當我和添加一行我可以看到所有的項目和解析賬戶。但是,如果我使用My timesheet>標籤Details,我只能看到內部項目。

我試圖

  1. ACL部分(as said here
  2. 組屬性,
  3. 用戶的技術選擇,

,但我失敗了。標籤SummaryDetails的不同行爲使我認爲OpenERP代碼中存在一些錯誤。

如何管理爲用戶列出的項目?

回答

1

您必須使用域規則。
你可以找到一個很好的答案和解釋在這裏:Understanding OpenERP Domain Filter?

要配置域規則,去Settings >> Technical >> Security >> Record Rules

在另一方面,如果你想創建你的域規則,你安裝你的模塊,它可能將它們存儲在XML文件中會很有用。 我會給你一個我正在使用的例子。

<?xml version="1.0"?> 
<openerp> 
    <data> 
     <!-- ########################### OPINIONS ############################# --> 
     <!-- everyone can see issued opinions, but can't edit them --> 
     <record id="proc_uc_see_issued_opinions_rule" model="ir.rule"> 
      <field name="name">See issued opinions rule</field> 
      <field name="model_id" ref="model_opinion"/> 
      <field name="domain_force">[('state','=','issued')]</field> 
      <field name="perm_read" eval="True"/> <!-- can see --> 
      <field name="perm_write" eval="False"/> <!-- can't change it --> 
      <field name="perm_unlink" eval="False"/> 
      <field name="perm_create" eval="False"/>    
      <!--<field name="global" eval="True"/>--> 
      <field name="global" eval="0" /> 
      <field name="groups" eval="[(6,0,[ref('processos_uc.group_processos_user')])]"/>   
     </record> 

     <!-- consultant can see and edit his opinion requests --> 
     <record id="proc_uc_see_own_opinions_rule" model="ir.rule"> 
      <field name="name">See own opinions rule</field> 
      <field name="model_id" ref="model_opinion"/> 
      <field name="domain_force">['|',('consultant_uid','=',user.id),('consultant_uid','=',False)]</field> 
      <field name="perm_read" eval="True"/> 
      <field name="perm_write" eval="True"/> 
      <field name="perm_unlink" eval="True"/> 
      <field name="perm_create" eval="True"/>    
      <field name="global" eval="0" /> 
      <field name="groups" eval="[(6,0,[ref('processos_uc.group_processos_user')])]"/>   
     </record> 
(...) 
     <!-- managers can do anything on opipions! --> 
     <record id="proc_uc_managers_can_do_anything_opinions_rule" model="ir.rule"> 
      <field name="name">Managers can do anything on opinions rule</field> 
      <field name="model_id" ref="model_opinion"/> 
      <field name="domain_force">[(1,'=',1)]</field> 
      <field name="perm_read" eval="True"/> 
      <field name="perm_write" eval="True"/> 
      <field name="perm_unlink" eval="True"/> 
      <field name="perm_create" eval="True"/>    
      <field name="global" eval="0" /> 
      <field name="groups" eval="[(6,0,[ref('processos_uc.group_processos_manager')])]"/>   
     </record> 
    </data> 
</openerp> 

希望這會有所幫助!

+0

謝謝,這有助於我編寫規則的語法。不幸的是,我仍然無法理解我必須創建或更改哪些規則才能獲得所需的可視化。我不太瞭解openERP對象,很難猜測這些字段。 – Radioleao

+0

轉到'設置>>技術>>數據庫結構>>模型'並搜索您要應用規則的模型(您可以使用搜索框或列出所有對象 - 如果尚未顯示)單擊_「xxx的1-80」_在搜索框的右上角,選擇「無限」) 確定您想要限制的字段的名稱(它可能會是'user_id',它肯定會是('your_field_name','=',user.id),('your_field_name','=',False)]'' –

+0

我已經嘗試過,但我完全錯了。我必須找到'用戶關聯到項目'或'用戶關注項目'的字段。請,你能幫我找到那個,並寫出規則嗎? – Radioleao

0

試試這個:

你可以取其員工分配了項目列表。

def default_project(self, cr, uid, context=None): 
    cr.execute('''select project_id from project_team_members where uid=%s and is_active='t' limit 1''',(uid,)) 
    project_id=cr.fetchone() 
    if project_id: 
     return project_id and project_id[0] or False 
    return False 

_defaults = { 
     'project_id':default_project, 
     }