我正在使用时间表模块设置OpenERP 7.0,我希望任何用户只能在使用My timesheet
部分编写时间表时看到分配给他的项目。
我的问题是,当我以用户身份登录时,My timesheet
>标签Summary
,当我和添加一行时,我可以看到所有项目和分析帐户。但是,如果我使用My timesheet
>选项卡Details
,我只能看到内部项目。
我试过
但我失败了。标签Summary
和Details
的不同行为让我觉得OpenERP代码中存在一些错误。
如何管理为用户列出的项目?
答案 0 :(得分: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>
希望这会有所帮助!
答案 1 :(得分: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,
}