From 43f366352a433dca19fd5b7084fc3f4b5883c653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Wed, 7 Jul 2021 19:30:52 +0200 Subject: [PATCH] [IMP] web_disable_export_group: Disable 'export all' button --- web_disable_export_group/README.rst | 17 +++++---- .../i18n/web_disable_export_group.pot | 17 ++++++++- .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 6 +-- .../static/description/index.html | 13 ++++--- .../static/src/js/disable_export_group.js | 37 +++++++++++++++---- .../src/js/web_disable_export_group_tour.js | 14 +++++-- web_disable_export_group/tests/test_tour.py | 24 +++++++++++- 8 files changed, 99 insertions(+), 30 deletions(-) diff --git a/web_disable_export_group/README.rst b/web_disable_export_group/README.rst index bbd1fe6ae..6d41a552f 100644 --- a/web_disable_export_group/README.rst +++ b/web_disable_export_group/README.rst @@ -14,22 +14,22 @@ Web Disable Export Group :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github - :target: https://github.com/OCA/web/tree/13.0/web_disable_export_group + :target: https://github.com/OCA/web/tree/14.0/web_disable_export_group :alt: OCA/web .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/web-13-0/web-13-0-web_disable_export_group + :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_disable_export_group :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/162/13.0 + :target: https://runbot.odoo-community.org/runbot/162/14.0 :alt: Try me on Runbot |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. @@ -55,7 +55,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -80,6 +80,7 @@ Contributors * David Vidal * João Marques + * Alexandre Díaz Maintainers ~~~~~~~~~~~ @@ -94,6 +95,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/web `_ project on GitHub. +This module is part of the `OCA/web `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_disable_export_group/i18n/web_disable_export_group.pot b/web_disable_export_group/i18n/web_disable_export_group.pot index 80395d288..5aa2a3338 100644 --- a/web_disable_export_group/i18n/web_disable_export_group.pot +++ b/web_disable_export_group/i18n/web_disable_export_group.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,6 +13,11 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: web_disable_export_group +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__display_name +msgid "Display Name" +msgstr "" + #. module: web_disable_export_group #. openerp-web #: code:addons/web_disable_export_group/static/src/js/disable_export_group.js:0 @@ -31,3 +36,13 @@ msgstr "" #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" msgstr "" + +#. module: web_disable_export_group +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__id +msgid "ID" +msgstr "" + +#. module: web_disable_export_group +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http____last_update +msgid "Last Modified on" +msgstr "" 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..f05431681 100644 --- a/web_disable_export_group/static/description/index.html +++ b/web_disable_export_group/static/description/index.html @@ -367,11 +367,11 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

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.

Table of contents

@@ -401,7 +401,7 @@ make use of the option ‘Export’.

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -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
  • @@ -435,7 +436,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/web project on GitHub.

    +

    This module is part of the OCA/web project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    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")