diff --git a/addons/spreadsheet/models/__init__.py b/addons/spreadsheet/models/__init__.py
index 1e5778f2654..4ffa8ea879f 100644
--- a/addons/spreadsheet/models/__init__.py
+++ b/addons/spreadsheet/models/__init__.py
@@ -2,3 +2,4 @@
from . import res_currency
from . import res_currency_rate
+from . import spreadsheet_mixin
diff --git a/addons/spreadsheet/models/spreadsheet_mixin.py b/addons/spreadsheet/models/spreadsheet_mixin.py
new file mode 100644
index 00000000000..d8ec5a9c47d
--- /dev/null
+++ b/addons/spreadsheet/models/spreadsheet_mixin.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+import base64
+from odoo import api, fields, models
+from odoo.addons.spreadsheet.utils import empty_spreadsheet_data_base64
+
+class SpreadsheetMixin(models.AbstractModel):
+ _name = "spreadsheet.mixin"
+ _description = "Spreadsheet mixin"
+ _auto = False
+
+ spreadsheet_binary_data = fields.Binary(required=True, string="Spreadsheet file", default=empty_spreadsheet_data_base64())
+ spreadsheet_data = fields.Text(compute='_compute_spreadsheet_data', inverse='_inverse_spreadsheet_data')
+ thumbnail = fields.Binary()
+
+ @api.depends("spreadsheet_binary_data")
+ def _compute_spreadsheet_data(self):
+ for spreadsheet in self.with_context(bin_size=False):
+ if not spreadsheet.spreadsheet_binary_data:
+ spreadsheet.spreadsheet_data = False
+ else:
+ spreadsheet.spreadsheet_data = base64.b64decode(spreadsheet.spreadsheet_binary_data).decode()
+
+ def _inverse_spreadsheet_data(self):
+ for spreadsheet in self:
+ if not spreadsheet.spreadsheet_data:
+ spreadsheet.spreadsheet_binary_data = False
+ else:
+ spreadsheet.spreadsheet_binary_data = base64.b64encode(spreadsheet.spreadsheet_data.encode())
diff --git a/addons/spreadsheet/static/tests/utils/data.js b/addons/spreadsheet/static/tests/utils/data.js
index 1589016ddc7..1f52d4aced9 100644
--- a/addons/spreadsheet/static/tests/utils/data.js
+++ b/addons/spreadsheet/static/tests/utils/data.js
@@ -218,12 +218,12 @@ export function getBasicData() {
"spreadsheet.template": {
fields: {
name: { string: "Name", type: "char" },
- data: { string: "Data", type: "binary" },
+ spreadsheet_data: { string: "Spreadsheet Data", type: "text" },
thumbnail: { string: "Thumbnail", type: "binary" },
},
records: [
- { id: 1, name: "Template 1", data: btoa("{}") },
- { id: 2, name: "Template 2", data: btoa("{}") },
+ { id: 1, name: "Template 1", spreadsheet_data: {} },
+ { id: 2, name: "Template 2", spreadsheet_data: {} },
],
},
"res.currency": {
diff --git a/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py b/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py
index 5179c86cb2b..0e4d2f6f065 100644
--- a/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py
+++ b/addons/spreadsheet_dashboard/models/spreadsheet_dashboard.py
@@ -1,24 +1,12 @@
-import base64
-import json
-
-from odoo import api, fields, models, _
-
-from odoo.addons.spreadsheet.utils import empty_spreadsheet_data_base64
+from odoo import fields, models
class SpreadsheetDashboard(models.Model):
_name = 'spreadsheet.dashboard'
_description = 'Spreadsheet Dashboard'
+ _inherit = "spreadsheet.mixin"
_order = 'sequence'
name = fields.Char(required=True, translate=True)
dashboard_group_id = fields.Many2one('spreadsheet.dashboard.group', required=True)
- data = fields.Binary(required=True, default=lambda self: empty_spreadsheet_data_base64())
- spreadsheet_data = fields.Text(compute='_compute_spreadsheet_data')
- thumbnail = fields.Binary()
sequence = fields.Integer()
group_ids = fields.Many2many('res.groups', default=lambda self: self.env.ref('base.group_user'))
-
- @api.depends("data")
- def _compute_spreadsheet_data(self):
- for dashboard in self.with_context(bin_size=False):
- dashboard.spreadsheet_data = base64.b64decode(dashboard.data).decode()
diff --git a/addons/spreadsheet_dashboard/views/spreadsheet_dashboard_views.xml b/addons/spreadsheet_dashboard/views/spreadsheet_dashboard_views.xml
index cb8207eb9e2..be93c81a3e2 100644
--- a/addons/spreadsheet_dashboard/views/spreadsheet_dashboard_views.xml
+++ b/addons/spreadsheet_dashboard/views/spreadsheet_dashboard_views.xml
@@ -53,7 +53,7 @@
-
+
diff --git a/addons/spreadsheet_dashboard_account/data/dashboards.xml b/addons/spreadsheet_dashboard_account/data/dashboards.xml
index 9857d516209..a1cd1d6d3c8 100644
--- a/addons/spreadsheet_dashboard_account/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_account/data/dashboards.xml
@@ -3,7 +3,7 @@
Invoicing
-
+
20
diff --git a/addons/spreadsheet_dashboard_event_sale/data/dashboards.xml b/addons/spreadsheet_dashboard_event_sale/data/dashboards.xml
index 97f653b1082..35ed35afc4a 100644
--- a/addons/spreadsheet_dashboard_event_sale/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_event_sale/data/dashboards.xml
@@ -7,7 +7,7 @@
Events
-
+
60
diff --git a/addons/spreadsheet_dashboard_hr_expense/data/dashboards.xml b/addons/spreadsheet_dashboard_hr_expense/data/dashboards.xml
index ac552511abe..1cd34c6159a 100644
--- a/addons/spreadsheet_dashboard_hr_expense/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_hr_expense/data/dashboards.xml
@@ -3,7 +3,7 @@
Expenses
-
+
40
diff --git a/addons/spreadsheet_dashboard_hr_timesheet/data/dashboards.xml b/addons/spreadsheet_dashboard_hr_timesheet/data/dashboards.xml
index 2505fb2b5ae..dff86e9fd6d 100644
--- a/addons/spreadsheet_dashboard_hr_timesheet/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_hr_timesheet/data/dashboards.xml
@@ -3,7 +3,7 @@
Tasks
-
+
100
diff --git a/addons/spreadsheet_dashboard_im_livechat/data/dashboards.xml b/addons/spreadsheet_dashboard_im_livechat/data/dashboards.xml
index a15c8d7b59e..4ca50d716da 100644
--- a/addons/spreadsheet_dashboard_im_livechat/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_im_livechat/data/dashboards.xml
@@ -3,7 +3,7 @@
Live chat
-
+
100
diff --git a/addons/spreadsheet_dashboard_pos_hr/data/dashboards.xml b/addons/spreadsheet_dashboard_pos_hr/data/dashboards.xml
index d3967891e30..121c487175f 100644
--- a/addons/spreadsheet_dashboard_pos_hr/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_pos_hr/data/dashboards.xml
@@ -3,7 +3,7 @@
Point of Sale
-
+
300
diff --git a/addons/spreadsheet_dashboard_purchase/data/dashboards.xml b/addons/spreadsheet_dashboard_purchase/data/dashboards.xml
index 78b4eaaaebb..29b4a39a53b 100644
--- a/addons/spreadsheet_dashboard_purchase/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_purchase/data/dashboards.xml
@@ -3,7 +3,7 @@
Vendors
-
+
200
diff --git a/addons/spreadsheet_dashboard_purchase_stock/data/dashboards.xml b/addons/spreadsheet_dashboard_purchase_stock/data/dashboards.xml
index ac95a88c9dc..68a027be404 100644
--- a/addons/spreadsheet_dashboard_purchase_stock/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_purchase_stock/data/dashboards.xml
@@ -3,7 +3,7 @@
Purchase
-
+
100
diff --git a/addons/spreadsheet_dashboard_sale/data/dashboards.xml b/addons/spreadsheet_dashboard_sale/data/dashboards.xml
index c72461fbd53..fe8abc3f25f 100644
--- a/addons/spreadsheet_dashboard_sale/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_sale/data/dashboards.xml
@@ -3,7 +3,7 @@
Sales
-
+
100
@@ -11,7 +11,7 @@
Product
-
+
200
diff --git a/addons/spreadsheet_dashboard_sale_timesheet/data/dashboards.xml b/addons/spreadsheet_dashboard_sale_timesheet/data/dashboards.xml
index abcf10f2bea..6474fb822c8 100644
--- a/addons/spreadsheet_dashboard_sale_timesheet/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_sale_timesheet/data/dashboards.xml
@@ -3,7 +3,7 @@
Timesheets
-
+
200
diff --git a/addons/spreadsheet_dashboard_stock_account/data/dashboards.xml b/addons/spreadsheet_dashboard_stock_account/data/dashboards.xml
index e499e6f8dd8..2c2a08ea86d 100644
--- a/addons/spreadsheet_dashboard_stock_account/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_stock_account/data/dashboards.xml
@@ -3,7 +3,7 @@
Inventory On Hand
-
+
300
diff --git a/addons/spreadsheet_dashboard_website_sale_slides/data/dashboards.xml b/addons/spreadsheet_dashboard_website_sale_slides/data/dashboards.xml
index ed959728932..2d5a17b8fe1 100644
--- a/addons/spreadsheet_dashboard_website_sale_slides/data/dashboards.xml
+++ b/addons/spreadsheet_dashboard_website_sale_slides/data/dashboards.xml
@@ -3,7 +3,7 @@
eLearning
-
+
200