4

我想创建一个操作,该操作将调用模型上的方法,传递树视图中所选行的 ID,以便在选择项目时该操作在屏幕的右侧可用。是否可以在不使用单个“确定”按钮创建向导的情况下做到这一点?

通常,我希望能够调用 ir.module.module 的 button_upgrade 方法来一次更新多个模块,但这对应用程序中的许多情况很有用。

我正在使用 OpenERP 6.1 和 web 客户端。

4

4 回答 4

2

我没有 v6,但这适用于 v7:

<record id="action_id_name" model="ir.actions.server">
    <field name="name">Name that shows in More button</field>
    <field name="type">ir.actions.server</field>
    <field name="model_id" ref="model_blah_blah"/>
    <field name="state">code</field>
    <field name="code">self.some_custom_code(cr, uid, context.get('active_ids'), ..., context=context)</field>
</record>

<record id="value_id_name" model="ir.values">
    <field name="name">Name</field>
    <field name="action_id" ref="action_id_name"/>
    <field name="value" eval="'ir.actions.server,' + str(ref('action_id_name'))"/>
    <field name="key">action</field>
    <field name="model_id" ref="model_blah_blah"/>
    <field name="model">blah.blah</field>
    <field name="key2">client_action_multi</field>
</record>

def some_custom_code(self, cursor, uid, ids, ..., context):
    # possibly do some processing
    # maybe with the ... extra fields you added
    #
    # post your changes, either with an sql statement or by calling
    # self.write(...)
    return True

您应该用实际值替换的名称:

  • action_id_name:您的操作记录的 id
  • Name that shows in More button:你想在按钮中显示的任何内容
  • model_blah_blah:使用的模型的名称(应与文件中的任何内容匹配security/ir.model.access.csv
  • some_custom_code:模型中函数的名称
  • value_id_name: 你的action的值记录的id
  • Name:一个名字(不知道它出现在哪里)
  • blah.blah: 你的名字modeltableOpenERP 符号
  • ...:您添加的任何额外参数/参数
于 2015-03-12T21:01:13.583 回答
2

我在 5.0 中使用旧式向导执行此操作,但我还没有看到在 6.1 Web 客户端中执行此操作的方法。您仍然可以在 6.1 GTK 客户端中使用旧式向导,但它在 Web 客户端中不起作用。

我猜你可以将财富消息传送到 OK 对话框中来娱乐你的用户。

于 2012-07-26T23:23:52.417 回答
1

我得到了这个工作:

  1. 创建一个新的服务器操作,在设置»自定义»低级对象»操作»服务器操作:

    • 操作名称:“升级选定模块”
    • 对象:ir.module.module
    • 动作类型:Python 代码
    • Python 代码:action = obj.button_upgrade(context=context)
  2. 创建一个新的Action Binding,在 Settings » Customization » Low Level Objects » Actions » Action Bindings:

    • 名称:“升级模块动作绑定”
    • 型号名称:ir.module.module
    • 限定符:client_action_multi
    • 操作:在“操作(仅限更改)”框中搜索“升级选定模块”。您应该获得类似以下内容的 Action Reference 字段:“ir.actions.server,680”。

论坛主题“操作:如何获取选定的行?” 被用作参考。您可能还会发现有趣的电子邮件模板按钮自动创建操作以使用定义的电子邮件模板进行群发邮件。

于 2012-07-30T09:16:16.433 回答
0

你应该能够通过一个execute动作来做到这一点。 http://doc.openerp.com/v6.1/developer/03_modules_4.html#actions

于 2012-07-28T02:38:21.123 回答