有没有办法隐藏基于已登录用户的工作流程按钮?
我正在开发一个OpenERP 7.0模块,在这个过程的某个阶段,用户可以承担他的责任。
我尝试了这个<button name="take_request" string="Take request" help="Take this request to your responsability" attrs="{'invisible': ['|', ('state','!=','treatment'),('owner','=',user.id)]}" />
(就像我在域规则中所做的那样),但是我收到以下错误:
NameError: name 'user' is not defined
如果我尝试<button name="take_request" string="Take request" help="Take this request to your responsability" attrs="{'invisible': ['|', ('state','!=','treatment'),('owner','=','user.id')]}" />
(引号内的whit user.id),我没有收到错误,但它没有隐藏按钮。
提前致谢!
答案 0 :(得分:1)
我最终整理出来,而且工作正常。我在我的对象中使用了field.function,在我的按钮的隐形属性中使用了这个字段。我将留下相关代码供将来参考。
在我的py中,创建了一个函数,用于检查我是否对任何请求负责,并在我的对象上添加了field.function:
def _check_ami_responsible(self, cr, uid, ids, field_name, arg, context):
""" Checks if user is responsible for this request
@return: Dictionary of values
"""
res = {}
for req in self.browse(cr, uid, ids, context=context):
if req.responsible_name.id == uid:
res[req.id] = True
else:
res[req.id] = False
return res
(...)
_columns={
(....)
'ami_responsible': fields.function(_check_ami_responsible, type="boolean", obj="generic.request", method=True),
}
然后在我看来,我在按钮上添加了条件('ami_responsible','=',False),以便在不负责该请求时隐藏它。
<button name="confirm_request" class="oe_highlight" string="Confirm Request" type="workflow" attrs="{'invisible': ['|',('ami_responsible', '=', False), '|',('state','!=', 'submitted'), ('needs_reformulation', '=', True)]}" />
希望这有帮助!
答案 1 :(得分:0)
尝试使用uid
代替user.id
。在xml中,您无法传递'user',它是res.user对象。但是你可以传递active_id,uid,parent。如果它有父视图,上下文等