diff --git a/setup/web_disable_export_group/odoo/addons/web_disable_export_group b/setup/web_disable_export_group/odoo/addons/web_disable_export_group
new file mode 120000
index 000000000..d8a2f35c1
--- /dev/null
+++ b/setup/web_disable_export_group/odoo/addons/web_disable_export_group
@@ -0,0 +1 @@
+../../../../web_disable_export_group
\ No newline at end of file
diff --git a/setup/web_disable_export_group/setup.py b/setup/web_disable_export_group/setup.py
new file mode 100644
index 000000000..28c57bb64
--- /dev/null
+++ b/setup/web_disable_export_group/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)
diff --git a/web_disable_export_group/__manifest__.py b/web_disable_export_group/__manifest__.py
index f17a6f1b2..f4692f43b 100644
--- a/web_disable_export_group/__manifest__.py
+++ b/web_disable_export_group/__manifest__.py
@@ -4,7 +4,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Web Disable Export Group",
- "version": "14.0.2.0.0",
+ "version": "15.0.2.0.0",
"license": "AGPL-3",
"author": "Onestein, Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web",
@@ -12,8 +12,12 @@
"depends": ["web"],
"data": [
"security/groups.xml",
- "templates/assets.xml",
- "templates/tour_assets.xml",
+ "security/ir.model.access.csv",
],
"installable": True,
+ "assets": {
+ "web.assets_backend": ["/web_disable_export_group/static/src/js/*.js"],
+ "web.assets_tests": ["/web_disable_export_group/static/src/tours/*.js"],
+ "web.assets_qweb": ["/web_disable_export_group/static/src/xml/**/*"],
+ },
}
diff --git a/web_disable_export_group/migrations/14.0.1.1.0/pre-migration.py b/web_disable_export_group/migrations/14.0.1.1.0/pre-migration.py
deleted file mode 100644
index 6ba053019..000000000
--- a/web_disable_export_group/migrations/14.0.1.1.0/pre-migration.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from openupgradelib import openupgrade
-
-
-@openupgrade.migrate()
-def migrate(env, version):
- # Otherwise, the migration already happened on 13.0
- if not env.ref("web_disable_export_group.group_export_xlsx_data", False):
- openupgrade.rename_xmlids(
- env.cr,
- [
- (
- "web_disable_export_group.group_export_data",
- "web_disable_export_group.group_export_xlsx_data",
- )
- ],
- )
diff --git a/web_disable_export_group/models/__init__.py b/web_disable_export_group/models/__init__.py
index 9a5eb7187..ea997b3c5 100644
--- a/web_disable_export_group/models/__init__.py
+++ b/web_disable_export_group/models/__init__.py
@@ -1 +1,2 @@
from . import ir_http
+from . import models
diff --git a/web_disable_export_group/models/models.py b/web_disable_export_group/models/models.py
new file mode 100644
index 000000000..63a911d91
--- /dev/null
+++ b/web_disable_export_group/models/models.py
@@ -0,0 +1,23 @@
+# Copyright 2023 Tecnativa - David Vidal
+# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
+from odoo import models
+
+
+class Base(models.AbstractModel):
+ _inherit = "base"
+
+ def export_data(self, fields_to_export):
+ """Export fields for selected objects
+
+ :param fields_to_export: list of fields
+ :param raw_data: True to return value in native Python type
+ :rtype: dictionary with a *datas* matrix
+
+ This method is used when exporting data via client menu
+ """
+ if self.env.user.has_group("web_disable_export_group.group_export_xlsx_data"):
+ fields_to_export = [
+ models.fix_import_export_id_paths(f) for f in fields_to_export
+ ]
+ return {"datas": self._export_rows(fields_to_export)}
+ return super().export_data(fields_to_export)
diff --git a/web_disable_export_group/readme/CONFIGURE.rst b/web_disable_export_group/readme/CONFIGURE.rst
index f32251f68..e1c825c1a 100644
--- a/web_disable_export_group/readme/CONFIGURE.rst
+++ b/web_disable_export_group/readme/CONFIGURE.rst
@@ -1,2 +1,2 @@
-Enable the group "Direct Export" to the users who are allowed to
-make use of the option 'Export xlsx'.
+Enable the group *Direct Export* to the users who are allowed to make use of the option
+'Export xlsx' from the list view.
diff --git a/web_disable_export_group/readme/CONTRIBUTORS.rst b/web_disable_export_group/readme/CONTRIBUTORS.rst
index 10aca8773..fa584642e 100644
--- a/web_disable_export_group/readme/CONTRIBUTORS.rst
+++ b/web_disable_export_group/readme/CONTRIBUTORS.rst
@@ -9,3 +9,4 @@
* João Marques
* Alexandre Díaz
* Víctor Martínez
+ * David Vidal
diff --git a/web_disable_export_group/readme/DESCRIPTION.rst b/web_disable_export_group/readme/DESCRIPTION.rst
index cbe8c22ec..8e9916e39 100644
--- a/web_disable_export_group/readme/DESCRIPTION.rst
+++ b/web_disable_export_group/readme/DESCRIPTION.rst
@@ -1,5 +1,7 @@
-The standard export group prevents both options: 'Direct Export (xlsx)' and 'Export All'.
+The standard grants/prevents access to any UI export via *Access to export feature*
+group.
-This module adds a new group for the 'Direct Export (xlsx)' feature, leaving the standard one for only the 'Export All' feature.
+This module adds a new group for the 'Direct Export (xlsx)' feature, leaving the
+standard one for only the 'Export All' feature.
-Admin user can always use the export option.
+Admin users can always use the export option.
diff --git a/web_disable_export_group/readme/USAGE.rst b/web_disable_export_group/readme/USAGE.rst
index 58da01296..e35c9bd40 100644
--- a/web_disable_export_group/readme/USAGE.rst
+++ b/web_disable_export_group/readme/USAGE.rst
@@ -1 +1,3 @@
-Every user without *Direct Export (xlsx)* permission won't have the option available.
+- Users in the *Access to export feature* group or admins can export in any way.
+- Users in the *Direct Export (xlsx)* group can only use the default export feature
+ from the list view.
diff --git a/web_disable_export_group/security/groups.xml b/web_disable_export_group/security/groups.xml
index 3eb23a749..cdcf4e0e7 100644
--- a/web_disable_export_group/security/groups.xml
+++ b/web_disable_export_group/security/groups.xml
@@ -4,11 +4,16 @@
Direct Export (xlsx)
-
+
+
+
diff --git a/web_disable_export_group/security/ir.model.access.csv b/web_disable_export_group/security/ir.model.access.csv
new file mode 100644
index 000000000..589bcc421
--- /dev/null
+++ b/web_disable_export_group/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_ir_exports_group_xls","ir_exports group_xls","base.model_ir_exports","web_disable_export_group.group_export_xlsx_data",1,0,0,0
diff --git a/web_disable_export_group/static/src/js/abstract_controller.esm.js b/web_disable_export_group/static/src/js/abstract_controller.esm.js
new file mode 100644
index 000000000..8576a18a2
--- /dev/null
+++ b/web_disable_export_group/static/src/js/abstract_controller.esm.js
@@ -0,0 +1,26 @@
+/** @odoo-module **/
+/* Copyright 2016 Onestein
+ Copyright 2018 Tecnativa - David Vidal
+ Copyright 2021 Tecnativa - Alexandre Díaz
+ Copyright 2022 Tecnativa - Víctor Martínez
+ License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
+import AbstractController from "web.AbstractController";
+import session from "web.session";
+
+AbstractController.include({
+ /**
+ * @override
+ */
+ is_action_enabled: function (action) {
+ if (
+ !session.is_superuser &&
+ action &&
+ action === "export_xlsx" &&
+ !session.group_xlsx_export_data
+ ) {
+ return false;
+ }
+
+ return this._super.apply(this, arguments);
+ },
+});
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
deleted file mode 100644
index 7e499443f..000000000
--- a/web_disable_export_group/static/src/js/disable_export_group.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2016 Onestein
- Copyright 2018 Tecnativa - David Vidal
- Copyright 2021 Tecnativa - Alexandre Díaz
- Copyright 2022 Tecnativa - Víctor Martínez
- License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
-odoo.define("web_disable_export_group.WebDisableExportGroupController", function (
- require
-) {
- "use strict";
-
- const session = require("web.session");
- const AbstractController = require("web.AbstractController");
-
- AbstractController.include({
- /**
- * @override
- */
- is_action_enabled: function (action) {
- if (
- !session.is_superuser &&
- action &&
- action.startsWith("export_xlsx") &&
- !session.group_xlsx_export_data
- ) {
- return false;
- }
-
- return this._super.apply(this, arguments);
- },
- });
-});
diff --git a/web_disable_export_group/static/src/js/list_controller.esm.js b/web_disable_export_group/static/src/js/list_controller.esm.js
new file mode 100644
index 000000000..a38c4decf
--- /dev/null
+++ b/web_disable_export_group/static/src/js/list_controller.esm.js
@@ -0,0 +1,19 @@
+/** @odoo-module **/
+/* Copyright 2018 Tecnativa - David Vidal
+ License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
+import ListController from "web.ListController";
+import session from "web.session";
+
+ListController.include({
+ init() {
+ this._super(...arguments);
+ this.isExportXlsEnable = false;
+ },
+ async willStart() {
+ const res = await this._super(...arguments);
+ this.isExportXlsEnable = await session.user_has_group(
+ "web_disable_export_group.group_export_xlsx_data"
+ );
+ return res;
+ },
+});
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
deleted file mode 100644
index 119e38337..000000000
--- a/web_disable_export_group/static/src/js/web_disable_export_group_tour.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright 2020 Tecnativa - João Marques
- Copyright 2022 Tecnativa - Víctor Martínez
- License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
-
-odoo.define("web_disable_export_group.tour", function (require) {
- "use strict";
-
- var tour = require("web_tour.tour");
-
- tour.register(
- "export_tour_xlsx_button_ok",
- {
- test: true,
- url:
- "/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)",
- },
- ]
- );
- tour.register(
- "export_tour_xlsx_button_ko",
- {
- test: true,
- url:
- "/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))",
- },
- ]
- );
- return {};
-});
diff --git a/web_disable_export_group/static/src/tours/web_disable_export_group_tour.esm.js b/web_disable_export_group/static/src/tours/web_disable_export_group_tour.esm.js
new file mode 100644
index 000000000..1702df8d6
--- /dev/null
+++ b/web_disable_export_group/static/src/tours/web_disable_export_group_tour.esm.js
@@ -0,0 +1,33 @@
+/** @odoo-module **/
+/* Copyright 2020 Tecnativa - João Marques
+ Copyright 2022 Tecnativa - Víctor Martínez
+ License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
+
+import tour from "web_tour.tour";
+
+tour.register(
+ "export_tour_xlsx_button_ok",
+ {
+ test: true,
+ url: "/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)",
+ },
+ ]
+);
+tour.register(
+ "export_tour_xlsx_button_ko",
+ {
+ test: true,
+ url: "/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))",
+ },
+ ]
+);
diff --git a/web_disable_export_group/static/src/xml/export_xls_views.xml b/web_disable_export_group/static/src/xml/export_xls_views.xml
new file mode 100644
index 000000000..84fecc27a
--- /dev/null
+++ b/web_disable_export_group/static/src/xml/export_xls_views.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ widget.is_action_enabled('export_xlsx') and widget.isExportXlsEnable
+
+
+
+
diff --git a/web_disable_export_group/templates/assets.xml b/web_disable_export_group/templates/assets.xml
deleted file mode 100644
index ec5155977..000000000
--- a/web_disable_export_group/templates/assets.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/web_disable_export_group/templates/tour_assets.xml b/web_disable_export_group/templates/tour_assets.xml
deleted file mode 100644
index 5f0513ef8..000000000
--- a/web_disable_export_group/templates/tour_assets.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-