Я хотел бы удалить «Экспорт» в меню действий в Odoo 14 Community Edition.
Я хочу удалить его для всех представлений сразу, если это возможно; в противном случае, по одному для каждой требуемой модели или вида было бы хорошо.
Я пытался:
<xpath expr = "//tree" position = "attributes">
<attribute name = "export_xlsx">false</attribute>
</xpath>
в индивидуальной модели. Не работает.
Также попытался перезаписать боковую панель в javascript. Не работает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Odoo покажет опцию Export только в том случае, если пользователь принадлежит к группе Доступ к функции экспорта.
Чтобы скрыть опцию экспорта, просто удалите пользователя из списка
Переопределение меню действий (ранее называвшегося боковой панелью) или контроллера списка сделает группу экспорта устаревшей.
Вы можете переопределить _getActionMenuItems, как вы это сделали, но перед вызовом super установите isExportEnable на false, чтобы Odoo не добавлял параметр Export к другим элементам действия.
Итак, обновленная часть от aekis.dev — моя лучшая версия, верно?
Сделайте это, используя этот код js
odoo.define('disable_export', function (require) {
"use strict";
const ListView = require('web.ListView');
const ListController = require('web.ListController');
ListView.include({
init: function (viewInfo, params) {
this._super.apply(this, arguments);
this.controllerParams.activeActions.export_xlsx = false;
}
})
ListController.include({
_getActionMenuItems: function (state) {
this.isExportEnable = false;
return this._super.apply(this, arguments);
}
})
})
Я попробовал ваш код как есть. Кнопка «Экспорт» в меню действий все еще отображается.
извините за задержку, я обновил свой ответ уже протестированной рабочей частью. Я вижу, что вы нашли похожее решение
Наконец-то я нашел решение этой проблемы.
odoo.define('remove_export_button', function (require) {
"use strict";
var core = require('web.core');
var ListController = require('web.ListController');
ListController.include({
/**
* @override
* @private
*/
_getActionMenuItems: function (state) {
let actionMenus = this._super.apply(this, arguments);
if (actionMenus?.items){
actionMenus.items.other = actionMenus?.items?.other.filter(menu => menu.description !== 'Export');
}
return actionMenus;
},
});
});
Это работает для всех представлений одновременно.
У вас есть решение без удаления пользователя из группы, потому что мне нужна группа, но я не хочу, чтобы пользователь видел эту опцию?