openerp:对树视图中选定的所有ID调用方法的操作

openerp:对树视图中选定的所有ID调用方法的操作,openerp,Openerp,我想创建一个操作,该操作将在一个模型上调用一个方法,该模型在树状视图中传递所选行的ID,以便在选择项目时,该操作在屏幕的右侧部分可用。是否可以在不使用单个“确定”按钮创建向导的情况下执行此操作 通常,我希望能够调用ir.module.module的按钮\u升级方法一次更新几个模块,但这对于应用程序中的许多情况都很有用 我正在使用OpenERP6.1和web客户端 我在5.0中使用了一个,但我还没有在6.1 web客户端中看到这样做的方法。您仍然可以在6.1 GTK客户端中使用旧式向导,但它在we

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

通常,我希望能够调用ir.module.module的按钮\u升级方法一次更新几个模块,但这对于应用程序中的许多情况都很有用

我正在使用OpenERP6.1和web客户端

我在5.0中使用了一个,但我还没有在6.1 web客户端中看到这样做的方法。您仍然可以在6.1 GTK客户端中使用旧式向导,但它在web客户端中不起作用


我想,你可以通过管道将财富信息输入OK对话框来娱乐你的用户。

你应该可以通过执行
操作来做到这一点。

我成功地做到了:

  • 在设置»自定义»低级对象»操作»服务器操作中创建新的服务器操作

    • 操作名称:“升级所选模块”
    • 对象:ir.module.module
    • 动作类型:Python代码
    • Python代码:action=obj.button\u升级(context=context)
  • 在设置»自定义»低级对象»操作»操作绑定处创建新的操作绑定

    • 名称:“升级模块操作绑定”
    • 型号名称:ir.module.module
    • 限定符:客户端\u操作\u多
    • 操作:在“操作(仅更改)”框中搜索“升级所选模块”。您应该获得类似于“ir.actions.server,680”的操作引用字段
  • 论坛主题被用作参考。
    您还可能会发现,使用定义的电子邮件模板自动创建一个操作以进行批量邮件发送也很有趣。

    我没有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
    
    
    “更多”按钮中显示的名称
    ir.actions.server
    代码
    self.some_自定义_代码(cr、uid、context.get('active_id'),…,context=context)
    名称
    行动
    废话
    客户端\u操作\u多
    定义一些自定义代码(self、游标、uid、id、…、上下文):
    #可能做一些处理
    #也许和。。。您添加的额外字段
    #
    #通过sql语句或调用
    #self.write(…)
    返回真值
    
    应使用实际值替换的名称:

    • action\u id\u name
      :操作记录的id
    • 显示在“更多”按钮中的名称
      :您希望在按钮中显示的内容
    • model_blah_blah
      :所用模型的名称(应与
      security/ir.model.access.csv文件中的任何内容匹配)
    • some\u custom\u code
      :模型中函数的名称
    • value\u id\u name
      :操作的值记录的id
    • 名称
      :名称(不确定它显示在哪里)
    • blah.blah
      :您的
      型号的名称
      表格
      在OpenERP符号中
    • :添加的任何额外参数/参数

    这是我最初的想法,但不幸的是,该页面上关于“执行”操作的信息非常少。我甚至不确定OpenERP中是否存在这样的东西。在ir_actions.py中,没有任何动作类型类似于“执行”。我很乐意接受一个更详细的答案。从设计上看,这是非常丑陋的(根本不是你的错)。我会试一试,然后再报告。为什么你认为这比OpenERP中的大多数东西都更丑陋,@gurneyalex?对我来说,这大致类似于配置向导的方式。如果您不喜欢通过“低级对象”菜单进行配置,可以在模块的XML数据文件中执行相同的操作。这通常会导致调试困难。这些数据在迁移过程中可能会出现问题。