openerp:在树视图中选择的所有id上调用方法的操作

时间:2012-07-26 11:48:38

标签: openerp

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

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

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

4 个答案:

答案 0 :(得分:2)

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

我猜你可以将好运信息输入OK对话框来招待你的用户。

答案 1 :(得分:2)

我没有v6,但这适用于第7版:

<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:您的操作值记录的ID
  • Name:一个名字(不知道它出现在哪里)
  • blah.blah:您的modeltable在OpenERP表示法中的名称
  • ...:您添加的任何额外参数/参数

答案 2 :(得分:1)

我有这个工作:

  1. 在设置»自定义»低级对象»操作»服务器操作:

    中创建新的服务器操作
    • 操作名称:“升级所选模块”
    • 对象:ir.module.module
    • 操作类型:Python代码
    • Python代码:action = obj.button_upgrade(context = context)
  2. 在设置»自定义»低级对象»操作»操作绑定中创建新的操作绑定

    • 名称:“升级模块操作绑定”
    • 型号名称:ir.module.module
    • 限定符:client_action_multi
    • 操作:在“操作(仅更改)”框中搜索“升级所选模块”。您应该获取Action Reference字段,例如:“ir.actions.server,680”。
  3. 论坛主题"Action : how to get selected rows ?"被用作参考。 您可能还会感到有趣Email Template's button使用定义的电子邮件模板自动创建执行群发邮件的操作。

答案 3 :(得分:0)

您应该可以通过execute操作执行此操作。 http://doc.openerp.com/v6.1/developer/03_modules_4.html#actions