Odoo 9是/否弹出框python

时间:2016-09-23 00:54:31

标签: openerp odoo-9

Odoo v9。

我想在执行某些python代码之前使用yes / no选项提示用户。

如果这是按钮,我可以使用confirm ="文本?"属性,但我不想触发任何数据库更新,无论用户是否回答此特定提示。

e.g。 onchange事件触发是/否框,然后可以操作页面,但用户仍然必须按"保存"保持任何变化。

使用基础odoo有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

onchange个事件无法返回对话框,因为它们根本不是为了这样做而构建的https://www.odoo.com/forum/how-to/developers-13/what-should-onchange-methods-do-and-return-57760

您可以使用向导(它不是真正的向导,它只是一个表单)并将其显示为弹出窗口。我们的wizard model将是Transient模型,在指定的时间后会被odoo丢弃。

from openerp import fields, models, api

class test_model(models.Model):
    _name = 'test.model'
    name = fields.Char(string='Value')

    @api.multi
    def call_up_wizard(self):
      return {
            'name': 'Are you sure?',
            'type': 'ir.actions.act_window',
            'res_model': 'wizard',
            'view_mode': 'form',
            'view_type': 'form',
            'target': 'new',
             }

class wizard(models.TransientModel):
    _name = 'wizard'

    yes_no = fields.Char(default='Do you want to proceed?')

    @api.multi
    def yes(self):
        pass
       # sure continue!

    @api.multi
    def no(self):
        pass # don't do anything stupid

这就是你的观点的样子

<record id="cashadvance_list" model="ir.ui.view">
  <field name="name">Test Dialog</field>
  <field name="model">test.model</field>
  <field name="type">form</field>
  <field name="arch" type="xml">
    <form string="Test Dialog" version="8.0">
      <group>
        <button class="oe_highlight" name="call_up_wizard" string="confirm" type="object" />
      </group>
    </form>
  </field>
</record>

<record model="ir.ui.view" id="wizard_form">
  <field name="name">wizard.form</field>
  <field name="model">wizard</field>
  <field name="type">form</field>
  <field name="arch" type="xml">
    <form string="Confirm dialog">

      <field name="yes_no" readonly="1" />

        <footer>
          <button class="oe_highlight" name="yes" string="Yes" />
          <button class="oe_highlight" name="no" string="No" />
        </footer>

    </form>
  </field>
</record>


      <record model="ir.actions.act_window" id="action_test">
            <field name="name">Cash advance list</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">test.model</field>
            <field name="view_type">form</field>
            <field name="view_mode">form,tree</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">
                  It's empty, create something
                </p>
                </field>
        </record>

在我们的test_model视图中,我们有一个按钮,显示wizard作为弹出窗口,然后在向导按钮分别由yesno方法处理,这使您可以更好地控制按钮,因为您知道有单独的方法来控制表单上的两个按钮。

我刚才给出了这个答案,对于碰巧偶然发现这个帖子并且想知道如何从按钮创建弹出窗口的人来说。