从Odoo中的另一个服务器操作调用服务器操作

时间:2016-12-20 20:38:45

标签: openerp

我正在尝试从Odoo 10中的其他服务器操作调用服务器操作。根据documentation,您可以在第一个操作的代码中分配action变量,以便调用下一步行动。这对我来说似乎没有用。

我的第一个操作是在stock.quant模型上定义的,代码如下:

if record:
    log('main')
    action = {
        "type": "ir.actions.server",
        "id": 366,
        "model_id": record.product_id.id,
    }

然后,我定义了另一个服务器操作,其数据库标识为366。它在product.product模型上定义,代码如下:

log('triggered')

当我触发第一个操作时,我希望看到main的日志条目和triggered的条目。但是,我只看到main的条目,表示第二个动作永远不会被触发。

我做错了吗?从另一个服务器操作触发一个服务器操作的适当方法是什么?

更新

通过反复试验我取得了一些进展,并且能够触发第二个服务器操作。触发它并传入适当模型以便第二个动作运行的方法是:

action = {
    "type": "ir.actions.server",
    "id": 366,
    "context": {"active_id": record.product_id.id, "active_model": "product.product"}
}

当我将第一个动作添加到模型的“更多”菜单时,一切正常,并通过UI手动触发。我看到记录了“主要”和“触发器”。

但是,当我使用自动操作在更新或创建stock.quant模型时触发此操作时,只会触发第一个操作。换句话说,只记录“main”,但不记录“trigger”。为什么第二个操作会在手动触发第一个操作时成功触发,但在通过自动操作触发第一个操作时无效?

0 个答案:

没有答案