在 Odoo_13 上修改 Crash_manager

Modify Crash_manager on Odoo_13

大家好我正在尝试修改错误发生时odoo显示的错误window只显示按钮查看详细信息并复制到剪贴板给特定的用户组,我试图改变crash_manager.xml 在 web 模块上,但是只有当我在 odoo 中处于开发人员模式时才能看到所做的更改,并且我不了解 JavaScript 来更改 crash_manager.js 但是如果你可以告诉我如何实现这一点,你会帮助我很多。

patch the crash_manager class, you will need to understand how Odoo manage assets

您必须将脚本包含在 web.assets_backend 中,其中包含特定于 Web 客户端的代码。

<template id="assets_backend" name="My assets" inherit_id="web.assets_backend">
    <xpath expr="." position="inside">
        <script type="text/javascript" src="/<Module name>/static/src/js/crash_manager.js"></script>
    </xpath>
</template>

在下面的代码中,我们将定义一个新的小部件属性 visibility,稍后我们可以在模板中使用它来控制按钮的可见性:

odoo.define('<Module name>.CrashManager', function (require) {
"use strict";
    var ErrorDialog = require('web.CrashManager').ErrorDialog;
    var session = require('web.session');
    ErrorDialog.include({
        init: function (parent, options, error) {
            var self = this;
            this._super.apply(this, [parent, options, error]);
            // this.visibility = session.is_system?'visible': "hidden";
            session.user_has_group('base.group_system').then(function(has_group){
                self.visibility = has_group?'visible': "hidden";
            });
        },
    });
});

隐藏 DetailsCopy 按钮会使消息过时,因此您需要更改它。

在下面的示例中,我们更改 CrashManager.error 模板以定义 Copy the full error to clipboardSee details 按钮的 style 属性:

<t t-extend="CrashManager.error">
    <t t-jquery="div.float-right" t-operation="attributes">
        <attribute name="t-att-style">'visibility: ' + widget.visibility</attribute>
    </t>
    <t t-jquery="button" t-operation="attributes">
        <attribute name="t-att-style">'visibility: ' + widget.visibility</attribute>
    </t>
</t>