diff --git a/web_disable_export_group/README.rst b/web_disable_export_group/README.rst
index bbd1fe6ae..c1afee4fc 100644
--- a/web_disable_export_group/README.rst
+++ b/web_disable_export_group/README.rst
@@ -26,10 +26,10 @@ Web Disable Export Group
|badge1| |badge2| |badge3| |badge4| |badge5|
In the standard Odoo the UI option 'Export' that is present in the 'Action' menu
-of any list view is always enabled (for every user).
+and the 'Export All' button of any list view is always enabled (for every user).
-This module makes the option 'Export' enabled only for the users that belong
-to the Export Data group.
+This module makes the option 'Export' and 'Export All' enabled only for the users
+that belong to the Export Data group.
Admin user can always use the export option.
@@ -80,6 +80,7 @@ Contributors
* David Vidal
* João Marques
+ * Alexandre Díaz
Maintainers
~~~~~~~~~~~
diff --git a/web_disable_export_group/readme/CONTRIBUTORS.rst b/web_disable_export_group/readme/CONTRIBUTORS.rst
index 043f98583..d34bdc8b6 100644
--- a/web_disable_export_group/readme/CONTRIBUTORS.rst
+++ b/web_disable_export_group/readme/CONTRIBUTORS.rst
@@ -7,3 +7,4 @@
* David Vidal
* João Marques
+ * Alexandre Díaz
diff --git a/web_disable_export_group/readme/DESCRIPTION.rst b/web_disable_export_group/readme/DESCRIPTION.rst
index ecc454e24..fc67346c3 100644
--- a/web_disable_export_group/readme/DESCRIPTION.rst
+++ b/web_disable_export_group/readme/DESCRIPTION.rst
@@ -1,7 +1,7 @@
In the standard Odoo the UI option 'Export' that is present in the 'Action' menu
-of any list view is always enabled (for every user).
+and the 'Export All' button of any list view is always enabled (for every user).
-This module makes the option 'Export' enabled only for the users that belong
-to the Export Data group.
+This module makes the option 'Export' and 'Export All' enabled only for the users
+that belong to the Export Data group.
Admin user can always use the export option.
diff --git a/web_disable_export_group/static/description/index.html b/web_disable_export_group/static/description/index.html
index c9b146cb4..7fe27df04 100644
--- a/web_disable_export_group/static/description/index.html
+++ b/web_disable_export_group/static/description/index.html
@@ -369,9 +369,9 @@ ul.auto-toc {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
In the standard Odoo the UI option ‘Export’ that is present in the ‘Action’ menu
-of any list view is always enabled (for every user).
-This module makes the option ‘Export’ enabled only for the users that belong
-to the Export Data group.
+and the ‘Export All’ button of any list view is always enabled (for every user).
+This module makes the option ‘Export’ and ‘Export All’ enabled only for the users
+that belong to the Export Data group.
Admin user can always use the export option.
@@ -424,6 +424,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
Tecnativa:
- David Vidal
- João Marques
+- Alexandre Díaz
diff --git a/web_disable_export_group/static/src/js/disable_export_group.js b/web_disable_export_group/static/src/js/disable_export_group.js
index 5411aae33..a94763f0e 100644
--- a/web_disable_export_group/static/src/js/disable_export_group.js
+++ b/web_disable_export_group/static/src/js/disable_export_group.js
@@ -1,17 +1,22 @@
/* Copyright 2016 Onestein
Copyright 2018 Tecnativa - David Vidal
+ Copyright 2021 Tecnativa - Alexandre Díaz
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
-odoo.define("web_disable_export_group", function(require) {
+odoo.define("web_disable_export_group", function (require) {
"use strict";
- var core = require("web.core");
- var Sidebar = require("web.Sidebar");
- var session = require("web.session");
- var _t = core._t;
+ const core = require("web.core");
+ const Sidebar = require("web.Sidebar");
+ const session = require("web.session");
+ const AbstractController = require("web.AbstractController");
+ const _t = core._t;
Sidebar.include({
- _addItems: function(sectionCode, items) {
- var _items = items;
+ /**
+ * @override
+ */
+ _addItems: function (sectionCode, items) {
+ let _items = items;
if (
!session.is_superuser &&
sectionCode === "other" &&
@@ -23,4 +28,22 @@ odoo.define("web_disable_export_group", function(require) {
this._super(sectionCode, _items);
},
});
+
+ AbstractController.include({
+ /**
+ * @override
+ */
+ is_action_enabled: function (action) {
+ if (
+ !session.is_superuser &&
+ action &&
+ action.startsWith("export_") &&
+ !session.group_export_data
+ ) {
+ return false;
+ }
+
+ return this._super.apply(this, arguments);
+ },
+ });
});
diff --git a/web_disable_export_group/static/src/js/web_disable_export_group_tour.js b/web_disable_export_group/static/src/js/web_disable_export_group_tour.js
index 00c1c4e8e..d93b75ac6 100644
--- a/web_disable_export_group/static/src/js/web_disable_export_group_tour.js
+++ b/web_disable_export_group/static/src/js/web_disable_export_group_tour.js
@@ -1,7 +1,7 @@
/* Copyright 2020 Tecnativa - João Marques
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
-odoo.define("web_disable_export_group.tour", function(require) {
+odoo.define("web_disable_export_group.tour", function (require) {
"use strict";
var core = require("web.core");
@@ -17,6 +17,10 @@ odoo.define("web_disable_export_group.tour", function(require) {
"/web#model=ir.ui.view&view_type=list&cids=&action=base.action_ui_view",
},
[
+ {
+ content: "Check if 'Export all' button exists",
+ trigger: ".o_list_buttons:has(.o_list_export_xlsx)",
+ },
{
content: "Select all records",
trigger: ".custom-control-input:first",
@@ -28,7 +32,7 @@ odoo.define("web_disable_export_group.tour", function(require) {
{
content: "Check if Export button exists",
trigger:
- '.o_control_panel div.o_dropdown_menu a:contains("' +
+ '.o_cp_action_menus ul.o_dropdown_menu a:contains("' +
_t("Export") +
'")',
},
@@ -42,6 +46,10 @@ odoo.define("web_disable_export_group.tour", function(require) {
"/web#model=ir.ui.view&view_type=list&cids=&action=base.action_ui_view",
},
[
+ {
+ content: "Check if 'Export all' button exists",
+ trigger: ".o_list_buttons:not(:has(.o_list_export_xlsx))",
+ },
{
content: "Select all records",
trigger: ".custom-control-input:first",
@@ -53,7 +61,7 @@ odoo.define("web_disable_export_group.tour", function(require) {
{
content: "Check if Export button does not exist",
trigger:
- '.o_control_panel div.o_dropdown_menu a:first:not(:contains("' +
+ '.o_cp_action_menus ul.o_dropdown_menu a:first:not(:contains("' +
_t("Export") +
'"))',
},
diff --git a/web_disable_export_group/tests/test_tour.py b/web_disable_export_group/tests/test_tour.py
index 11a7a79ac..c4cadd043 100644
--- a/web_disable_export_group/tests/test_tour.py
+++ b/web_disable_export_group/tests/test_tour.py
@@ -5,8 +5,28 @@ import odoo.tests
@odoo.tests.tagged("post_install", "-at_install")
class TestTour(odoo.tests.HttpCase):
+ def setUp(self):
+ super().setUp()
+ self.env["res.users"].create(
+ {
+ "name": "user_not_export",
+ "login": "user_not_export",
+ "password": "user_not_export",
+ "groups_id": [
+ (
+ 6,
+ 0,
+ [
+ self.env.ref("base.group_user").id,
+ self.env.ref("base.group_system").id,
+ ],
+ )
+ ],
+ }
+ )
+
def test_admin(self):
self.start_tour("/web", "export_tour_admin", login="admin")
- def test_demo(self):
- self.start_tour("/web", "export_tour_demo", login="demo")
+ def test_user_not_export(self):
+ self.start_tour("/web", "export_tour_demo", login="user_not_export")