微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

返回act_window来自python代码时如何显示警告?奥多14

如何解决返回act_window来自python代码时如何显示警告?奥多14

在 product.template 模型中,我添加了新的智能按钮,该按钮将 ir.actions.act_window 操作返回到模型 stock.quant ,当单击同一按钮时,如果有警告,我还想返回警告产品基于条件: 这是警告代码

if not self or not self.env.user.has_group('sale.group_warning_sale'):
            return

        if self.sale_line_warn != 'no-message':
            if self.sale_line_warn_msg:
                message = self.sale_line_warn_msg
                warning = {
                    'title': ("Warning for %s") % self.name,'message': message
                }

            if self.sale_line_warn == 'block':
                self = False

            return {'warning': warning}

这里是xml文件

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_product_inherit" model="ir.ui.view">
        <field name="name">view_product_inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_only_form_view"/>
        <field name="arch" type="xml">
            <div name="button_Box" position="inside">
                <button class="oe_stat_button" name="my_action"
                        type="object" icon="fa-shopping-cart" string="Stock">
                </button>
            </div>
        </field>
    </record>
</odoo>

这是我的功能

  def my_action(self):
        return {
            'name': _('Stock'),'view_type': 'form','view_mode': 'tree','res_model': 'stock.quant','context': {'default_name': 'My warning message'},'type': 'ir.actions.act_window',}

*有什么帮助吗?有可能做到吗? 谢谢

解决方法

我能想到的简单解决方案是向 boolean 模型添加一个 datetime 字段和一个 product.template 字段。在操作中,如果有任何警告,请检查 boolean 字段是否为 True 并且如果从 datetime 字段传递的时间小于例如 30 秒,则不显示警告并返回您的 ir.actions.act_window 操作。但是,如果 boolean 字段是 False,则通过引发 UserWarningValidationError 来显示警告,并在警告消息的末尾询问用户“如果您确定并想继续,请再次单击该按钮”。并且不要忘记在显示返回警告时将 boolean 字段设置为 True 并将 datetime 字段设置为当前时间。返回操作时,还将 boolean 字段设置为 False

这样用户只会收到一次警告,如果他想继续,他可以再次点击按钮。

,

在 my_action 方法的顶部添加一个条件(在返回操作之前),如下所示:

if condition:   
      raise ValidationError("Error message")

不要忘记在 .py 文件的顶部导入 ValidationError。

from odoo.exceptions import ValidationError

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。