如何在openerp 7中隐藏基于用户的工作流程按钮?

时间:2014-05-09 15:22:49

标签: button attributes workflow hide openerp

有没有办法隐藏基于已登录用户的工作流程按钮?

我正在开发一个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),我没有收到错误,但它没有隐藏按钮。

提前致谢!

2 个答案:

答案 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。如果它有父视图,上下文等