From a28cc1cdd4e8b9d15e942a4de4716675349dce6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Lef=C3=A8vre?= Date: Wed, 30 Nov 2022 14:31:51 +0000 Subject: [PATCH] [MOV] spreadsheet: extract empty spreadsheet utils The empty spreadsheet data structure is reused (see Enterprise PR #34567) So we extract it to a function. closes odoo/odoo#106975 Related: odoo/enterprise#34567 Signed-off-by: Pierre Rousseau (pro) --- addons/spreadsheet/utils.py | 26 +++++++++++++++++++ .../models/spreadsheet_dashboard.py | 23 +++------------- 2 files changed, 29 insertions(+), 20 deletions(-) create mode 100644 addons/spreadsheet/utils.py diff --git a/addons/spreadsheet/utils.py b/addons/spreadsheet/utils.py new file mode 100644 index 00000000000..e7d3e582322 --- /dev/null +++ b/addons/spreadsheet/utils.py @@ -0,0 +1,26 @@ +import json +import base64 + +from odoo import _ + +def empty_spreadsheet_data_base64(): + """Create an empty spreadsheet workbook. + Encoded as base64 + """ + data = json.dumps(empty_spreadsheet_data()) + return base64.b64encode(data.encode()) + +def empty_spreadsheet_data(): + """Create an empty spreadsheet workbook. + The sheet name should be the same for all users to allow consistent references + in formulas. It is translated for the user creating the spreadsheet. + """ + return { + "version": 1, + "sheets": [ + { + "id": "sheet1", + "name": _("Sheet1"), + } + ] + } diff --git a/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py b/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py index 541b290844a..7515387befc 100644 --- a/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py +++ b/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py @@ -3,6 +3,8 @@ import json from odoo import api, fields, models, _ +from odoo.addons.spreadsheet.utils import empty_spreadsheet_data_base64 + class SpreadsheetDashboard(models.Model): _name = 'spreadsheet.dashboard' _description = 'Spreadsheet Dashboard' @@ -10,31 +12,12 @@ class SpreadsheetDashboard(models.Model): name = fields.Char(required=True) dashboard_group_id = fields.Many2one('spreadsheet.dashboard.group', required=True) - data = fields.Binary(required=True, default=lambda self: self._default_data()) + data = fields.Binary(required=True, default=lambda self: empty_spreadsheet_data_base64()) raw = fields.Binary(compute='_compute_raw') thumbnail = fields.Binary() sequence = fields.Integer() group_ids = fields.Many2many('res.groups', default=lambda self: self.env.ref('base.group_user')) - def _default_data(self): - data = json.dumps(self._empty_workbook_data()) - return base64.b64encode(data.encode()) - - def _empty_workbook_data(self): - """Create an empty spreadsheet workbook. - The sheet name should be the same for all users to allow consistent references - in formulas. It is translated for the user creating the spreadsheet. - """ - return { - "version": 1, - "sheets": [ - { - "id": "sheet1", - "name": _("Sheet1"), - } - ] - } - @api.depends('data') def _compute_raw(self): for dashboard in self: