2

我想在“草稿”阶段显示用户无法导出草稿阶段数据的验证。我知道'def export_data(self,fields_to_export)'函数,但它在选择字段后起作用。我只想在单击导出操作时进行验证。所以,任何人都可以建议我使用哪个功能来满足我的要求。我正在使用 Odoo 13。

提前致谢。

4

2 回答 2

2

一种方法是覆盖 _onExportData.ListController

检查以下代码(它使用state字段):

odoo.define("stack_overflow", function(require) {
"use strict";

    var listController = require("web.ListController");
    var dialog = require("web.Dialog");

    listController.include({
         /**
         * Opens the Export Dialog
         *
         * @private
         */
        _onExportData: function () {
            var self = this;
            var do_export = true;
            // Avoid calling `read` when `state` field is not available
            if (self.initialState.fields.hasOwnProperty('state')) {
                self._rpc({
                    model: self.modelName,
                    method: 'read',
                    args: [self.getSelectedIds(), ['state']],
                }).then(function (result) {
                    // Check if we have at least one draft record
                    for(var index in result) {
                        var item = result[index];
                        if (item.state === 'draft') {
                            do_export = false;
                            break;
                        }
                    }
                    if (do_export) {
                        self._getExportDialogWidget().open();
                    } else {
                        dialog.alert(self, "You can't export draft stage data!", {});
                    }
                });
            } else {
                this._getExportDialogWidget().open();
            }
        },
    });

});
于 2020-01-30T11:19:55.350 回答
0

您可以使用此方法def view_init(self, fields)。在此,您可以添加验证。

谢谢

于 2020-01-29T06:22:00.223 回答