From 5fbecee46270ae8ea863cfbf6d1f1aad2ee18e1f Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Tue, 26 Oct 2021 17:06:13 +0200 Subject: [PATCH] [IMP] web_disable_export_group: Differenciate between the XLSX export and the standard export --- web_disable_export_group/README.rst | 13 +++---- web_disable_export_group/__manifest__.py | 2 +- web_disable_export_group/i18n/es.po | 32 +++++++++++----- web_disable_export_group/i18n/hr.po | 32 +++++++++++----- web_disable_export_group/i18n/pt.po | 32 +++++++++++----- .../i18n/web_disable_export_group.pot | 19 +++------- web_disable_export_group/i18n/zh_CN.po | 32 +++++++++++----- .../migrations/14.0.1.1.0/post-migration.py | 16 ++++++++ web_disable_export_group/models/ir_http.py | 4 +- web_disable_export_group/readme/CONFIGURE.rst | 4 +- .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 6 +-- web_disable_export_group/readme/USAGE.rst | 2 +- web_disable_export_group/security/groups.xml | 6 ++- .../static/description/index.html | 13 +++---- .../static/src/js/disable_export_group.js | 30 +++------------ .../src/js/web_disable_export_group_tour.js | 38 ++----------------- web_disable_export_group/tests/test_tour.py | 37 +++++++++--------- 18 files changed, 166 insertions(+), 153 deletions(-) create mode 100644 web_disable_export_group/migrations/14.0.1.1.0/post-migration.py diff --git a/web_disable_export_group/README.rst b/web_disable_export_group/README.rst index 6d41a552f..58ec4a2a2 100644 --- a/web_disable_export_group/README.rst +++ b/web_disable_export_group/README.rst @@ -25,11 +25,9 @@ Web Disable Export Group |badge1| |badge2| |badge3| |badge4| |badge5| -In the standard Odoo the UI option 'Export' that is present in the 'Action' menu -and the 'Export All' button of any list view is always enabled (for every user). +The standard export group prevents both options: 'Direct Export (xlsx)' and 'Export All'. -This module makes the option 'Export' and 'Export All' enabled only for the users -that belong to the Export Data group. +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. @@ -41,13 +39,13 @@ Admin user can always use the export option. Configuration ============= -Enable the group "Export Data group" to the users who are allowed to -make use of the option 'Export'. +Enable the group "Direct Export" to the users who are allowed to +make use of the option 'Export xlsx'. Usage ===== -Every user without *Export Data* permission won't have the option available. +Every user without *Direct Export (xlsx)* permission won't have the option available. Bug Tracker =========== @@ -81,6 +79,7 @@ Contributors * David Vidal * João Marques * Alexandre Díaz + * Víctor Martínez Maintainers ~~~~~~~~~~~ diff --git a/web_disable_export_group/__manifest__.py b/web_disable_export_group/__manifest__.py index 7a4be4db9..94bf6106b 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.1.0.0", + "version": "14.0.2.0.0", "license": "AGPL-3", "author": "Onestein, " "Tecnativa, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/web", diff --git a/web_disable_export_group/i18n/es.po b/web_disable_export_group/i18n/es.po index a6de3e09e..18b288f8c 100644 --- a/web_disable_export_group/i18n/es.po +++ b/web_disable_export_group/i18n/es.po @@ -17,19 +17,33 @@ msgstr "" "X-Generator: Weblate 3.10\n" #. module: web_disable_export_group -#. openerp-web -#: code:addons/web_disable_export_group/static/src/js/disable_export_group.js:0 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#, python-format -msgid "Export" -msgstr "Exportar" +#: model:res.groups,name:web_disable_export_group.group_export_xlsx_data +msgid "Direct Export (xlsx)" +msgstr "" #. module: web_disable_export_group -#: model:res.groups,name:web_disable_export_group.group_export_data -msgid "Export Data" -msgstr "Exportar datos" +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__display_name +msgid "Display Name" +msgstr "" #. module: web_disable_export_group #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" msgstr "Ruta HTTP" + +#. 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 "" + +#, python-format +#~ msgid "Export" +#~ msgstr "Exportar" + +#~ msgid "Export Data" +#~ msgstr "Exportar datos" diff --git a/web_disable_export_group/i18n/hr.po b/web_disable_export_group/i18n/hr.po index 26041bf6d..8d3f878c9 100644 --- a/web_disable_export_group/i18n/hr.po +++ b/web_disable_export_group/i18n/hr.po @@ -18,19 +18,33 @@ msgstr "" "X-Generator: Weblate 3.9.1\n" #. module: web_disable_export_group -#. openerp-web -#: code:addons/web_disable_export_group/static/src/js/disable_export_group.js:0 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#, python-format -msgid "Export" -msgstr "Izvoz" +#: model:res.groups,name:web_disable_export_group.group_export_xlsx_data +msgid "Direct Export (xlsx)" +msgstr "" #. module: web_disable_export_group -#: model:res.groups,name:web_disable_export_group.group_export_data -msgid "Export Data" -msgstr "Izvoz podataka" +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__display_name +msgid "Display Name" +msgstr "" #. module: web_disable_export_group #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" msgstr "HTTP usmjeravanje" + +#. 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 "" + +#, python-format +#~ msgid "Export" +#~ msgstr "Izvoz" + +#~ msgid "Export Data" +#~ msgstr "Izvoz podataka" diff --git a/web_disable_export_group/i18n/pt.po b/web_disable_export_group/i18n/pt.po index e379d0bd9..4a01169ac 100644 --- a/web_disable_export_group/i18n/pt.po +++ b/web_disable_export_group/i18n/pt.po @@ -17,19 +17,33 @@ msgstr "" "X-Generator: Weblate 3.10\n" #. module: web_disable_export_group -#. openerp-web -#: code:addons/web_disable_export_group/static/src/js/disable_export_group.js:0 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#, python-format -msgid "Export" -msgstr "Exportar" +#: model:res.groups,name:web_disable_export_group.group_export_xlsx_data +msgid "Direct Export (xlsx)" +msgstr "" #. module: web_disable_export_group -#: model:res.groups,name:web_disable_export_group.group_export_data -msgid "Export Data" -msgstr "Exportar Dados" +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__display_name +msgid "Display Name" +msgstr "" #. module: web_disable_export_group #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" msgstr "Encaminhamento HTTP" + +#. 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 "" + +#, python-format +#~ msgid "Export" +#~ msgstr "Exportar" + +#~ msgid "Export Data" +#~ msgstr "Exportar Dados" 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 5aa2a3338..cb8e38a24 100644 --- a/web_disable_export_group/i18n/web_disable_export_group.pot +++ b/web_disable_export_group/i18n/web_disable_export_group.pot @@ -13,25 +13,16 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: web_disable_export_group +#: model:res.groups,name:web_disable_export_group.group_export_xlsx_data +msgid "Direct Export (xlsx)" +msgstr "" + #. 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 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#, python-format -msgid "Export" -msgstr "" - -#. module: web_disable_export_group -#: model:res.groups,name:web_disable_export_group.group_export_data -msgid "Export Data" -msgstr "" - #. module: web_disable_export_group #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" diff --git a/web_disable_export_group/i18n/zh_CN.po b/web_disable_export_group/i18n/zh_CN.po index 203977350..2fb410734 100644 --- a/web_disable_export_group/i18n/zh_CN.po +++ b/web_disable_export_group/i18n/zh_CN.po @@ -17,19 +17,33 @@ msgstr "" "X-Generator: Weblate 3.8\n" #. module: web_disable_export_group -#. openerp-web -#: code:addons/web_disable_export_group/static/src/js/disable_export_group.js:0 -#: code:addons/web_disable_export_group/static/src/js/web_disable_export_group_tour.js:0 -#, python-format -msgid "Export" -msgstr "导出" +#: model:res.groups,name:web_disable_export_group.group_export_xlsx_data +msgid "Direct Export (xlsx)" +msgstr "" #. module: web_disable_export_group -#: model:res.groups,name:web_disable_export_group.group_export_data -msgid "Export Data" -msgstr "导出数据" +#: model:ir.model.fields,field_description:web_disable_export_group.field_ir_http__display_name +msgid "Display Name" +msgstr "" #. module: web_disable_export_group #: model:ir.model,name:web_disable_export_group.model_ir_http msgid "HTTP Routing" msgstr "HTTP路由" + +#. 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 "" + +#, python-format +#~ msgid "Export" +#~ msgstr "导出" + +#~ msgid "Export Data" +#~ msgstr "导出数据" diff --git a/web_disable_export_group/migrations/14.0.1.1.0/post-migration.py b/web_disable_export_group/migrations/14.0.1.1.0/post-migration.py new file mode 100644 index 000000000..52ff69fc6 --- /dev/null +++ b/web_disable_export_group/migrations/14.0.1.1.0/post-migration.py @@ -0,0 +1,16 @@ +from openupgradelib import openupgrade + + +def add_new_group_from_group(self, env, group, new_group): + groups = env["res.groups"].search([("implied_ids", "=", group.id)]) + groups.write({"implied_ids": [(4, new_group.id)]}) + group.users.write({"groups_id": [(4, new_group.id)]}) + + +@openupgrade.migrate() +def migrate(env, version): + group = env.ref("web_disable_export_group.group_export_data") + new_group = env.ref("web_disable_export_group.group_export_xlsx_data") + add_new_group_from_group(env, group, new_group) + group = env.ref("base.group_allow_export") + add_new_group_from_group(env, group, new_group) diff --git a/web_disable_export_group/models/ir_http.py b/web_disable_export_group/models/ir_http.py index 156f13160..562ff40d9 100644 --- a/web_disable_export_group/models/ir_http.py +++ b/web_disable_export_group/models/ir_http.py @@ -13,8 +13,8 @@ class Http(models.AbstractModel): user = request.env.user res.update( { - "group_export_data": user - and user.has_group("web_disable_export_group.group_export_data"), + "group_xlsx_export_data": user + and user.has_group("web_disable_export_group.group_export_xlsx_data"), } ) return res diff --git a/web_disable_export_group/readme/CONFIGURE.rst b/web_disable_export_group/readme/CONFIGURE.rst index df6b1e4b7..f32251f68 100644 --- a/web_disable_export_group/readme/CONFIGURE.rst +++ b/web_disable_export_group/readme/CONFIGURE.rst @@ -1,2 +1,2 @@ -Enable the group "Export Data group" to the users who are allowed to -make use of the option 'Export'. +Enable the group "Direct Export" to the users who are allowed to +make use of the option 'Export xlsx'. diff --git a/web_disable_export_group/readme/CONTRIBUTORS.rst b/web_disable_export_group/readme/CONTRIBUTORS.rst index d34bdc8b6..10aca8773 100644 --- a/web_disable_export_group/readme/CONTRIBUTORS.rst +++ b/web_disable_export_group/readme/CONTRIBUTORS.rst @@ -8,3 +8,4 @@ * David Vidal * João Marques * Alexandre Díaz + * Víctor Martínez diff --git a/web_disable_export_group/readme/DESCRIPTION.rst b/web_disable_export_group/readme/DESCRIPTION.rst index fc67346c3..cbe8c22ec 100644 --- a/web_disable_export_group/readme/DESCRIPTION.rst +++ b/web_disable_export_group/readme/DESCRIPTION.rst @@ -1,7 +1,5 @@ -In the standard Odoo the UI option 'Export' that is present in the 'Action' menu -and the 'Export All' button of any list view is always enabled (for every user). +The standard export group prevents both options: 'Direct Export (xlsx)' and 'Export All'. -This module makes the option 'Export' and 'Export All' enabled only for the users -that belong to the Export Data group. +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. diff --git a/web_disable_export_group/readme/USAGE.rst b/web_disable_export_group/readme/USAGE.rst index 9e1706a1b..58da01296 100644 --- a/web_disable_export_group/readme/USAGE.rst +++ b/web_disable_export_group/readme/USAGE.rst @@ -1 +1 @@ -Every user without *Export Data* permission won't have the option available. +Every user without *Direct Export (xlsx)* permission won't have the option available. diff --git a/web_disable_export_group/security/groups.xml b/web_disable_export_group/security/groups.xml index 548e4c051..3eb23a749 100644 --- a/web_disable_export_group/security/groups.xml +++ b/web_disable_export_group/security/groups.xml @@ -2,8 +2,10 @@ - - Export Data + + Direct Export (xlsx) + +

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 -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.

+

The standard export group prevents both options: ‘Direct Export (xlsx)’ and ‘Export All’.

+

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.

Table of contents

@@ -389,12 +387,12 @@ that belong to the Export Data group.

Configuration

-

Enable the group “Export Data group” to the users who are allowed to -make use of the option ‘Export’.

+

Enable the group “Direct Export” to the users who are allowed to +make use of the option ‘Export xlsx’.

Usage

-

Every user without Export Data permission won’t have the option available.

+

Every user without Direct Export (xlsx) permission won’t have the option available.

Bug Tracker

@@ -425,6 +423,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
  • David Vidal
  • João Marques
  • Alexandre Díaz
  • +
  • Víctor Martínez
  • 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 a94763f0e..7e499443f 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,33 +1,15 @@ /* 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", function (require) { +odoo.define("web_disable_export_group.WebDisableExportGroupController", function ( + require +) { "use strict"; - 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({ - /** - * @override - */ - _addItems: function (sectionCode, items) { - let _items = items; - if ( - !session.is_superuser && - sectionCode === "other" && - items.length && - !session.group_export_data - ) { - _items = _.reject(_items, {label: _t("Export")}); - } - this._super(sectionCode, _items); - }, - }); AbstractController.include({ /** @@ -37,8 +19,8 @@ odoo.define("web_disable_export_group", function (require) { if ( !session.is_superuser && action && - action.startsWith("export_") && - !session.group_export_data + action.startsWith("export_xlsx") && + !session.group_xlsx_export_data ) { return false; } 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 d93b75ac6..119e38337 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,16 +1,14 @@ /* 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 core = require("web.core"); var tour = require("web_tour.tour"); - var _t = core._t; - tour.register( - "export_tour_admin", + "export_tour_xlsx_button_ok", { test: true, url: @@ -21,25 +19,10 @@ odoo.define("web_disable_export_group.tour", function (require) { 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", - }, - { - content: "Open actions", - trigger: ".o_dropdown_toggler_btn", - }, - { - content: "Check if Export button exists", - trigger: - '.o_cp_action_menus ul.o_dropdown_menu a:contains("' + - _t("Export") + - '")', - }, ] ); tour.register( - "export_tour_demo", + "export_tour_xlsx_button_ko", { test: true, url: @@ -50,21 +33,6 @@ odoo.define("web_disable_export_group.tour", function (require) { 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", - }, - { - content: "Open actions", - trigger: ".o_dropdown_toggler_btn", - }, - { - content: "Check if Export button does not exist", - trigger: - '.o_cp_action_menus ul.o_dropdown_menu a:first:not(:contains("' + - _t("Export") + - '"))', - }, ] ); return {}; diff --git a/web_disable_export_group/tests/test_tour.py b/web_disable_export_group/tests/test_tour.py index c4cadd043..9bfaf27e7 100644 --- a/web_disable_export_group/tests/test_tour.py +++ b/web_disable_export_group/tests/test_tour.py @@ -1,32 +1,33 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # Copyright 2020 Tecnativa - João Marques +# Copyright 2022 Tecnativa - Víctor Martínez import odoo.tests +from odoo.tests import new_test_user @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, - ], - ) - ], - } + new_test_user( + self.env, + login="user_not_export", + password="user_not_export", + groups="base.group_user,base.group_system", + ) + new_test_user( + self.env, + login="user_export_xlsx", + password="user_export_xlsx", + groups="base.group_user,base.group_system,%s" + % ("web_disable_export_group.group_export_xlsx_data"), ) def test_admin(self): - self.start_tour("/web", "export_tour_admin", login="admin") + self.start_tour("/web", "export_tour_xlsx_button_ok", login="admin") def test_user_not_export(self): - self.start_tour("/web", "export_tour_demo", login="user_not_export") + self.start_tour("/web", "export_tour_xlsx_button_ko", login="user_not_export") + + def test_user_export_xlsx(self): + self.start_tour("/web", "export_tour_xlsx_button_ok", login="user_export_xlsx")