3
0
Fork 0

[MIG] web_disable_export_group: Migration to 15.0

TT43531
15.0-ocabot-merge-pr-2789-by-pedrobaeza-bump-patch
David 2023-06-21 17:17:23 +02:00
parent 35a31d42d8
commit 2812b2b446
20 changed files with 147 additions and 130 deletions

View File

@ -0,0 +1 @@
../../../../web_disable_export_group

View File

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@ -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/**/*"],
},
}

View File

@ -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",
)
],
)

View File

@ -1 +1,2 @@
from . import ir_http
from . import models

View File

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

View File

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

View File

@ -9,3 +9,4 @@
* João Marques
* Alexandre Díaz
* Víctor Martínez
* David Vidal

View File

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

View File

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

View File

@ -4,11 +4,16 @@
<odoo>
<record id="group_export_xlsx_data" model="res.groups">
<field name="name">Direct Export (xlsx)</field>
<field name="implied_ids" eval="[(4, ref('base.group_allow_export'))]" />
<field name="category_id" ref="base.module_category_hidden" />
<field
name="users"
eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"
/>
</record>
<record id="base.group_allow_export" model="res.groups">
<field
name="implied_ids"
eval="[(4, ref('web_disable_export_group.group_export_xlsx_data'))]"
/>
</record>
</odoo>

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 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

View File

@ -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);
},
});

View File

@ -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);
},
});
});

View File

@ -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;
},
});

View File

@ -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 {};
});

View File

@ -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))",
},
]
);

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<templates>
<t t-extend="ListView.buttons">
<t t-jquery="t[t-if*='widget.isExportEnable']" t-operation="attributes">
<attribute
name="t-if"
>widget.is_action_enabled('export_xlsx') and widget.isExportXlsEnable</attribute>
</t>
</t>
</templates>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2016 Onestein
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).-->
<odoo>
<template
id="assets_backend"
name="web_disable_export_group assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<script
type="text/javascript"
src="/web_disable_export_group/static/src/js/disable_export_group.js"
/>
</xpath>
</template>
</odoo>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2020 Tecnativa - João Marques
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).-->
<odoo>
<template
id="assets_tests"
inherit_id="web.assets_tests"
name="Web Disable Export Group Assets Tests"
>
<xpath expr="." position="inside">
<script
type="text/javascript"
src="/web_disable_export_group/static/src/js/web_disable_export_group_tour.js"
/>
</xpath>
</template>
</odoo>