如何限制OpenERP“我的时间表”项目列表?
问题描述:
我使用时间表模块设置了OpenERP 7.0,我希望任何用户在编写时间表时都能看到分配给他的项目,使用部分My timesheet
。如何限制OpenERP“我的时间表”项目列表?
我的问题是,当我登录的用户,在My timesheet
>标签Summary
,当我和添加一行我可以看到所有的项目和解析账户。但是,如果我使用My timesheet
>标签Details
,我只能看到内部项目。
我试图
- ACL部分(as said here)
- 组属性,
- 用户的技术选择,
,但我失败了。标签Summary
和Details
的不同行为使我认为OpenERP代码中存在一些错误。
如何管理为用户列出的项目?
答
您必须使用域规则。
你可以找到一个很好的答案和解释在这里: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>
希望这会有所帮助!
答
试试这个:
你可以取其员工分配了项目列表。
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,
}
谢谢,这有助于我编写规则的语法。不幸的是,我仍然无法理解我必须创建或更改哪些规则才能获得所需的可视化。我不太了解openERP对象,很难猜测这些字段。 – Radioleao
转到'设置>>技术>>数据库结构>>模型'并搜索您要应用规则的模型(您可以使用搜索框或列出所有对象 - 如果尚未显示)单击_“xxx的1-80”_在搜索框的右上角,选择“无限”) 确定您想要限制的字段的名称(它可能会是'user_id',它肯定会是('your_field_name','=',user.id),('your_field_name','=',False)]'' –
我已经尝试过,但我完全错了。我必须找到'用户关联到项目'或'用户关注项目'的字段。请,你能帮我找到那个,并写出规则吗? – Radioleao