Чтобы проверить действие экспорта, щелкните указанное c условие. Odoo 13 - PullRequest
2 голосов
/ 29 января 2020

Я хочу показать на этапе «черновик» проверку, что пользователь не может экспортировать данные черновика. Я знаю о функции 'def export_data (self, fields_to_export)', но она работает после выбора полей. Я хочу эту проверку только при нажатии на действие экспорта. Итак, любой может подсказать мне, какую функцию я использовал для своего требования. Я пользуюсь Odoo 13.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Способ сделать это - переопределить _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();
            }
        },
    });

});
0 голосов
/ 29 января 2020

Вы можете использовать этот метод def view_init (self, fields) . В этом вы можете добавить свое подтверждение.

Спасибо

...