From c5e89ac2ae2d56a41a821f29995a50cd54248c45 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Sun, 28 Jul 2019 12:12:02 +0200
Subject: [PATCH 01/22] Add sql_export_excel
---
sql_export_excel/README.rst | 47 ++++++++
sql_export_excel/__init__.py | 1 +
sql_export_excel/__openerp__.py | 20 ++++
sql_export_excel/models/__init__.py | 1 +
sql_export_excel/models/sql_export.py | 108 ++++++++++++++++++
sql_export_excel/readme/CONFIGURE.rst | 4 +
sql_export_excel/readme/CONTRIBUTORS.rst | 1 +
sql_export_excel/readme/DESCRIPTION.rst | 4 +
sql_export_excel/tests/__init__.py | 2 +
.../tests/test_sql_query_excel.py | 108 ++++++++++++++++++
sql_export_excel/views/sql_export_view.xml | 21 ++++
11 files changed, 317 insertions(+)
create mode 100644 sql_export_excel/README.rst
create mode 100644 sql_export_excel/__init__.py
create mode 100644 sql_export_excel/__openerp__.py
create mode 100644 sql_export_excel/models/__init__.py
create mode 100644 sql_export_excel/models/sql_export.py
create mode 100644 sql_export_excel/readme/CONFIGURE.rst
create mode 100644 sql_export_excel/readme/CONTRIBUTORS.rst
create mode 100644 sql_export_excel/readme/DESCRIPTION.rst
create mode 100644 sql_export_excel/tests/__init__.py
create mode 100644 sql_export_excel/tests/test_sql_query_excel.py
create mode 100644 sql_export_excel/views/sql_export_view.xml
diff --git a/sql_export_excel/README.rst b/sql_export_excel/README.rst
new file mode 100644
index 000000000..5fb7bb10c
--- /dev/null
+++ b/sql_export_excel/README.rst
@@ -0,0 +1,47 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :alt: License: AGPL-3
+
+SQL Export Excel
+================
+
+Add the possibility to extract data from a sql query toward an excel file.
+It is also possible to provide an template excel file for a query. In this case,
+the data will be inserted in the specified sheet of the provided excel file. This
+is usefull when doing a lot of calculation in excel and the data is coming from Odoo.
+
+Known issues / Roadmap
+======================
+
+* It was designed to work with xlsx files only, xls format is not supported.
+
+
+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 smash it by providing detailed and welcomed feedback.
+
+Credits
+=======
+
+Contributors
+------------
+
+* Florian da Costa
+
+Maintainer
+----------
+
+.. image:: http://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: http://odoo-community.org
+
+This module is maintained by the OCA.
+
+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.
+
+To contribute to this module, please visit http://odoo-community.org.
diff --git a/sql_export_excel/__init__.py b/sql_export_excel/__init__.py
new file mode 100644
index 000000000..0650744f6
--- /dev/null
+++ b/sql_export_excel/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/sql_export_excel/__openerp__.py b/sql_export_excel/__openerp__.py
new file mode 100644
index 000000000..c130eece7
--- /dev/null
+++ b/sql_export_excel/__openerp__.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 Akretion
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
+
+{
+ 'name': 'SQL Export Excel',
+ 'version': '9.0.1.0.0',
+ 'author': 'Akretion,Odoo Community Association (OCA)',
+ 'website': 'http://github/oca/server-tools',
+ 'license': 'AGPL-3',
+ 'category': 'Generic Modules/Others',
+ 'summary': 'Allow to export a sql query to an excel file.',
+ 'depends': [
+ 'sql_export',
+ ],
+ 'data': [
+ 'views/sql_export_view.xml',
+ ],
+ 'installable': True,
+ }
diff --git a/sql_export_excel/models/__init__.py b/sql_export_excel/models/__init__.py
new file mode 100644
index 000000000..014462062
--- /dev/null
+++ b/sql_export_excel/models/__init__.py
@@ -0,0 +1 @@
+from . import sql_export
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
new file mode 100644
index 000000000..bb1ea5e49
--- /dev/null
+++ b/sql_export_excel/models/sql_export.py
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 Akretion
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
+
+from openerp import api, exceptions, fields, models, _
+from cStringIO import StringIO
+import logging
+import base64
+_logger = logging.getLogger(__name__)
+
+try:
+ import openpyxl
+except ImportError:
+ _logger.debug('Can not import openpyxl')
+
+
+class SqlExport(models.Model):
+ _inherit = 'sql.export'
+
+ file_format = fields.Selection(
+ selection_add=[('excel', 'Excel')])
+ header = fields.Boolean(
+ default=True,
+ help="Indicate if the header should be exported to the file.")
+ attachment_id = fields.Many2one(
+ 'ir.attachment', string='Excel Template',
+ help="If you configure an excel file (in xlsx format) here, the "
+ "result of the query will be injected in it.\nIt is usefull to "
+ "feed data in a excel file pre-configured with calculation")
+ sheet_position = fields.Integer(
+ default=1,
+ help="Indicate the sheet's position of the excel template where the "
+ "result of the sql query should be injected.")
+ row_position = fields.Integer(
+ default=1,
+ help="Indicate from which row the result of the query should be "
+ "injected.")
+ col_position = fields.Integer(
+ string="Column Position",
+ default=1,
+ help="Indicate from which column the result of the query should be "
+ "injected.")
+
+ @api.constrains('sheet_position')
+ def check_sheet_position(self):
+ for export in self:
+ if export.sheet_position < 1:
+ raise exceptions.ValidationError(
+ _("The sheet position can't be less than 1."))
+
+ @api.constrains('row_position')
+ def check_row_position(self):
+ for export in self:
+ if export.row_position < 1:
+ raise exceptions.ValidationError(
+ _("The row position can't be less than 1."))
+
+ @api.constrains('col_position')
+ def check_column_position(self):
+ for export in self:
+ if export.col_position < 1:
+ raise exceptions.ValidationError(
+ _("The column position can't be less than 1."))
+
+ @api.multi
+ def _get_file_extension(self):
+ self.ensure_one()
+ if self.file_format == 'excel':
+ return 'xlsx'
+ else:
+ return super(SqlExport, self)._get_file_extension()
+
+ @api.multi
+ def excel_get_datas_from_query(self, variable_dict):
+ self.ensure_one()
+ res = self._execute_sql_request(
+ params=variable_dict, mode='fetchall', header=self.header)
+ # Case we insert data in an existing excel file.
+ if self.attachment_id:
+ datas = self.attachment_id.datas
+ infile = StringIO()
+ infile.write(base64.b64decode(datas))
+ infile.seek(0)
+ wb = openpyxl.load_workbook(filename=infile)
+ sheets = wb.worksheets
+ try:
+ ws = sheets[self.sheet_position - 1]
+ except IndexError:
+ raise exceptions.ValidationError(
+ _("The Excel Template file contains less than %s sheets "
+ "Please, adjust the Sheet Position parameter."))
+ row_position = self.row_position or 1
+ col_position = self.col_position or 1
+ # Case of excel file creation
+ else:
+ wb = openpyxl.Workbook()
+ ws = wb.active
+ row_position = 1
+ col_position = 1
+ for index, row in enumerate(res, row_position):
+ for col, val in enumerate(row, col_position):
+ ws.cell(row=index, column=col).value = val
+ output = StringIO()
+ wb.save(output)
+ output.getvalue()
+ output_datas = base64.b64encode(output.getvalue())
+ output.close()
+ return output_datas
diff --git a/sql_export_excel/readme/CONFIGURE.rst b/sql_export_excel/readme/CONFIGURE.rst
new file mode 100644
index 000000000..abf9be6e1
--- /dev/null
+++ b/sql_export_excel/readme/CONFIGURE.rst
@@ -0,0 +1,4 @@
+If you want Odoo to update an existing excel file, you should create an attachment
+with the excel file and configure this attachment on the query.
+Then, you can configure the query to indicate if Odoo should export the header and where it should
+insert the data. By default, it will insert it in the first sheet, at first row/column.
diff --git a/sql_export_excel/readme/CONTRIBUTORS.rst b/sql_export_excel/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..0bddb053a
--- /dev/null
+++ b/sql_export_excel/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Florian da Costa
diff --git a/sql_export_excel/readme/DESCRIPTION.rst b/sql_export_excel/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..4808db7b5
--- /dev/null
+++ b/sql_export_excel/readme/DESCRIPTION.rst
@@ -0,0 +1,4 @@
+Add the possibility to extract data from a sql query toward an excel file.
+It is also possible to provide an template excel file for a query. In this case,
+the data will be inserted in the specified sheet of the provided excel file. This
+is usefull when doing a lot of calculation in excel and the data is coming from Odoo.
diff --git a/sql_export_excel/tests/__init__.py b/sql_export_excel/tests/__init__.py
new file mode 100644
index 000000000..22c4421ab
--- /dev/null
+++ b/sql_export_excel/tests/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import test_sql_query_excel
diff --git a/sql_export_excel/tests/test_sql_query_excel.py b/sql_export_excel/tests/test_sql_query_excel.py
new file mode 100644
index 000000000..a51423c67
--- /dev/null
+++ b/sql_export_excel/tests/test_sql_query_excel.py
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2019 Akretion ()
+# @author: Florian da Costa
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp.tests.common import TransactionCase
+import base64
+from cStringIO import StringIO
+import logging
+
+_logger = logging.getLogger(__name__)
+
+try:
+ import openpyxl
+except ImportError:
+ _logger.debug('Can not import openpyxl')
+
+
+class TestExportSqlQueryExcel(TransactionCase):
+
+ def setUp(self):
+ super(TestExportSqlQueryExcel, self).setUp()
+ self.wizard_obj = self.env['sql.file.wizard']
+
+ def get_workbook_from_query(self, wizard):
+ wizard.export_sql()
+ decoded_data = base64.b64decode(wizard.binary_file)
+ xlsx_file = StringIO(decoded_data)
+ return openpyxl.load_workbook(xlsx_file)
+
+ def test_excel_file_generation(self):
+ test_query = "SELECT 'testcol1' as firstcol, 2 as second_col"
+ query_vals = {
+ 'name': 'Test Query Excel',
+ 'query': test_query,
+ 'file_format': 'excel'
+ }
+ query = self.env['sql.export'].create(query_vals)
+ query.button_validate_sql_expression()
+ wizard = self.wizard_obj.create({
+ 'sql_export_id': query.id,
+ })
+ workbook = self.get_workbook_from_query(wizard)
+ ws = workbook.active
+ # Check values, header should be here by default
+ self.assertEqual(ws.cell(row=1, column=1).value, 'firstcol')
+ self.assertEqual(ws.cell(row=2, column=1).value, 'testcol1')
+ self.assertEqual(ws.cell(row=2, column=2).value, 2)
+
+ query.write({'header': False})
+ wb2 = self.get_workbook_from_query(wizard)
+ ws2 = wb2.active
+ # Check values, the header should not be present
+ self.assertEqual(ws2.cell(row=1, column=1).value, 'testcol1')
+ self.assertEqual(ws2.cell(row=1, column=2).value, 2)
+
+ def test_excel_file_insert(self):
+ # Create excel file with 2 sheets. Create a header in second sheet
+ # where data will be inserted
+ wb = openpyxl.Workbook()
+ ws = wb.active
+ ws.cell(row=1, column=1, value="My Test Value")
+ ws2 = wb.create_sheet("data")
+ ws2.cell(row=1, column=1, value='Partner Id')
+ ws2.cell(row=1, column=2, value='Partner Name')
+ output = StringIO()
+ wb.save(output)
+ data = output.getvalue()
+
+ # Create attachment with the created xlsx file which will be used as
+ # template in the sql query
+ attachmnent_vals = {
+ 'name': 'template xlsx sql export Res Partner',
+ 'datas': base64.b64encode(data),
+ }
+ attachment = self.env['ir.attachment'].create(attachmnent_vals)
+
+ # Create the query and configure it to insert the data in the second
+ # sheet of the xlsx template file and start inserting data at the
+ # second row, ignoring header (because the template excel file
+ # already contains a header)
+ test_query = "SELECT id, name FROM res_partner"
+ query_vals = {
+ 'name': 'Test Query Excel',
+ 'query': test_query,
+ 'file_format': 'excel',
+ 'attachment_id': attachment.id,
+ 'sheet_position': 2,
+ 'header': False,
+ 'row_position': 2,
+ }
+ query = self.env['sql.export'].create(query_vals)
+ query.button_validate_sql_expression()
+ wizard = self.wizard_obj.create({
+ 'sql_export_id': query.id,
+ })
+
+ # Check the generated excel file. The first sheet should still contain
+ # the same data and the second sheet should have kept the header and
+ # inserted data from the query
+ wb2 = self.get_workbook_from_query(wizard)
+ sheets = wb2.worksheets
+ ws1 = sheets[0]
+ # Check values, header should be here by default
+ self.assertEqual(ws1.cell(row=1, column=1).value, 'My Test Value')
+ ws2 = sheets[1]
+ self.assertEqual(ws2.cell(row=1, column=1).value, 'Partner Id')
+ self.assertTrue(ws2.cell(row=2, column=1).value)
diff --git a/sql_export_excel/views/sql_export_view.xml b/sql_export_excel/views/sql_export_view.xml
new file mode 100644
index 000000000..98fc3981c
--- /dev/null
+++ b/sql_export_excel/views/sql_export_view.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ sql.export
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From a445e8422792db06c5d4a1e9c7911fc8308f43d0 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Mon, 2 Sep 2019 13:06:36 +0200
Subject: [PATCH 02/22] Migrate sql_export_excel to v12
---
sql_export_excel/{__openerp__.py => __manifest__.py} | 3 +--
sql_export_excel/models/sql_export.py | 7 +++----
sql_export_excel/tests/__init__.py | 1 -
sql_export_excel/tests/test_sql_query_excel.py | 9 ++++-----
4 files changed, 8 insertions(+), 12 deletions(-)
rename sql_export_excel/{__openerp__.py => __manifest__.py} (90%)
diff --git a/sql_export_excel/__openerp__.py b/sql_export_excel/__manifest__.py
similarity index 90%
rename from sql_export_excel/__openerp__.py
rename to sql_export_excel/__manifest__.py
index c130eece7..237b2df70 100644
--- a/sql_export_excel/__openerp__.py
+++ b/sql_export_excel/__manifest__.py
@@ -1,10 +1,9 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
'name': 'SQL Export Excel',
- 'version': '9.0.1.0.0',
+ 'version': '12.0.1.0.0',
'author': 'Akretion,Odoo Community Association (OCA)',
'website': 'http://github/oca/server-tools',
'license': 'AGPL-3',
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index bb1ea5e49..48a45cf90 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -1,9 +1,8 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openerp import api, exceptions, fields, models, _
-from cStringIO import StringIO
+from io import BytesIO
import logging
import base64
_logger = logging.getLogger(__name__)
@@ -78,7 +77,7 @@ class SqlExport(models.Model):
# Case we insert data in an existing excel file.
if self.attachment_id:
datas = self.attachment_id.datas
- infile = StringIO()
+ infile = BytesIO()
infile.write(base64.b64decode(datas))
infile.seek(0)
wb = openpyxl.load_workbook(filename=infile)
@@ -100,7 +99,7 @@ class SqlExport(models.Model):
for index, row in enumerate(res, row_position):
for col, val in enumerate(row, col_position):
ws.cell(row=index, column=col).value = val
- output = StringIO()
+ output = BytesIO()
wb.save(output)
output.getvalue()
output_datas = base64.b64encode(output.getvalue())
diff --git a/sql_export_excel/tests/__init__.py b/sql_export_excel/tests/__init__.py
index 22c4421ab..6d89d7607 100644
--- a/sql_export_excel/tests/__init__.py
+++ b/sql_export_excel/tests/__init__.py
@@ -1,2 +1 @@
-# -*- coding: utf-8 -*-
from . import test_sql_query_excel
diff --git a/sql_export_excel/tests/test_sql_query_excel.py b/sql_export_excel/tests/test_sql_query_excel.py
index a51423c67..b1433c55b 100644
--- a/sql_export_excel/tests/test_sql_query_excel.py
+++ b/sql_export_excel/tests/test_sql_query_excel.py
@@ -1,11 +1,10 @@
-# -*- coding: utf-8 -*-
# Copyright (C) 2019 Akretion ()
# @author: Florian da Costa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from openerp.tests.common import TransactionCase
+from odoo.tests.common import TransactionCase
import base64
-from cStringIO import StringIO
+from io import BytesIO
import logging
_logger = logging.getLogger(__name__)
@@ -25,7 +24,7 @@ class TestExportSqlQueryExcel(TransactionCase):
def get_workbook_from_query(self, wizard):
wizard.export_sql()
decoded_data = base64.b64decode(wizard.binary_file)
- xlsx_file = StringIO(decoded_data)
+ xlsx_file = BytesIO(decoded_data)
return openpyxl.load_workbook(xlsx_file)
def test_excel_file_generation(self):
@@ -63,7 +62,7 @@ class TestExportSqlQueryExcel(TransactionCase):
ws2 = wb.create_sheet("data")
ws2.cell(row=1, column=1, value='Partner Id')
ws2.cell(row=1, column=2, value='Partner Name')
- output = StringIO()
+ output = BytesIO()
wb.save(output)
data = output.getvalue()
From e585ecf1eb2f8b8ae6cbe15f155261ba2dc6d89f Mon Sep 17 00:00:00 2001
From: Florian
Date: Tue, 3 Sep 2019 11:37:56 +0200
Subject: [PATCH 03/22] Small fixes for v12/python3 standard
Co-Authored-By: David Beal
---
sql_export_excel/models/sql_export.py | 6 +++---
sql_export_excel/tests/test_sql_query_excel.py | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index 48a45cf90..3479481e3 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -1,7 +1,7 @@
# Copyright 2019 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
-from openerp import api, exceptions, fields, models, _
+from odoo import api, exceptions, fields, models, _
from io import BytesIO
import logging
import base64
@@ -67,10 +67,10 @@ class SqlExport(models.Model):
if self.file_format == 'excel':
return 'xlsx'
else:
- return super(SqlExport, self)._get_file_extension()
+ return super()._get_file_extension()
@api.multi
- def excel_get_datas_from_query(self, variable_dict):
+ def excel_get_data_from_query(self, variable_dict):
self.ensure_one()
res = self._execute_sql_request(
params=variable_dict, mode='fetchall', header=self.header)
diff --git a/sql_export_excel/tests/test_sql_query_excel.py b/sql_export_excel/tests/test_sql_query_excel.py
index b1433c55b..5711ccb7c 100644
--- a/sql_export_excel/tests/test_sql_query_excel.py
+++ b/sql_export_excel/tests/test_sql_query_excel.py
@@ -18,7 +18,7 @@ except ImportError:
class TestExportSqlQueryExcel(TransactionCase):
def setUp(self):
- super(TestExportSqlQueryExcel, self).setUp()
+ super().setUp()
self.wizard_obj = self.env['sql.file.wizard']
def get_workbook_from_query(self, wizard):
From d02ad1f442757f669244c88db29dc97134b8934c Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Fri, 28 Aug 2020 08:53:23 +0000
Subject: [PATCH 04/22] [UPD] Update sql_export_excel.pot
---
sql_export_excel/i18n/sql_export_excel.pot | 110 +++++++++++++++++++++
1 file changed, 110 insertions(+)
create mode 100644 sql_export_excel/i18n/sql_export_excel.pot
diff --git a/sql_export_excel/i18n/sql_export_excel.pot b/sql_export_excel/i18n/sql_export_excel.pot
new file mode 100644
index 000000000..7a178edff
--- /dev/null
+++ b/sql_export_excel/i18n/sql_export_excel.pot
@@ -0,0 +1,110 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sql_export_excel
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: sql_export_excel
+#: selection:sql.export,file_format:0
+msgid "CSV"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
+msgid "Column Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: selection:sql.export,file_format:0
+msgid "Excel"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__attachment_id
+msgid "Excel Template"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__file_format
+msgid "File Format"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__header
+msgid "Header"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__attachment_id
+msgid "If you configure an excel file (in xlsx format) here, the result of the query will be injected in it.\n"
+"It is usefull to feed data in a excel file pre-configured with calculation"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__col_position
+msgid "Indicate from which column the result of the query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__row_position
+msgid "Indicate from which row the result of the query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__header
+msgid "Indicate if the header should be exported to the file."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__sheet_position
+msgid "Indicate the sheet's position of the excel template where the result of the sql query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__row_position
+msgid "Row Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model,name:sql_export_excel.model_sql_export
+msgid "SQL export"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__sheet_position
+msgid "Sheet Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:89
+#, python-format
+msgid "The Excel Template file contains less than %s sheets Please, adjust the Sheet Position parameter."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:62
+#, python-format
+msgid "The column position can't be less than 1."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:55
+#, python-format
+msgid "The row position can't be less than 1."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:48
+#, python-format
+msgid "The sheet position can't be less than 1."
+msgstr ""
+
From 7ba0459b2f14ac64db73f09001af27864e149097 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 28 Aug 2020 09:14:49 +0000
Subject: [PATCH 05/22] [UPD] README.rst
---
sql_export_excel/README.rst | 73 ++-
.../static/description/index.html | 430 ++++++++++++++++++
2 files changed, 485 insertions(+), 18 deletions(-)
create mode 100644 sql_export_excel/static/description/index.html
diff --git a/sql_export_excel/README.rst b/sql_export_excel/README.rst
index 5fb7bb10c..ea24d59fe 100644
--- a/sql_export_excel/README.rst
+++ b/sql_export_excel/README.rst
@@ -1,47 +1,84 @@
-.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
- :alt: License: AGPL-3
-
+================
SQL Export Excel
================
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
+ :target: https://github.com/OCA/server-tools/tree/12.0/sql_export_excel
+ :alt: OCA/server-tools
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-sql_export_excel
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/149/12.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
Add the possibility to extract data from a sql query toward an excel file.
It is also possible to provide an template excel file for a query. In this case,
the data will be inserted in the specified sheet of the provided excel file. This
is usefull when doing a lot of calculation in excel and the data is coming from Odoo.
-Known issues / Roadmap
-======================
+**Table of contents**
-* It was designed to work with xlsx files only, xls format is not supported.
+.. contents::
+ :local:
+Configuration
+=============
+
+If you want Odoo to update an existing excel file, you should create an attachment
+with the excel file and configure this attachment on the query.
+Then, you can configure the query to indicate if Odoo should export the header and where it should
+insert the data. By default, it will insert it in the first sheet, at first row/column.
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 smash it by providing detailed and welcomed feedback.
+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 `_.
+
+Do not contact contributors directly about support or help with technical issues.
Credits
=======
+Authors
+~~~~~~~
+
+* Akretion
+
Contributors
-------------
+~~~~~~~~~~~~
* Florian da Costa
-Maintainer
-----------
-
-.. image:: http://odoo-community.org/logo.png
- :alt: Odoo Community Association
- :target: http://odoo-community.org
+Maintainers
+~~~~~~~~~~~
This module is maintained by the OCA.
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
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.
-To contribute to this module, please visit http://odoo-community.org.
+This module is part of the `OCA/server-tools `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sql_export_excel/static/description/index.html b/sql_export_excel/static/description/index.html
new file mode 100644
index 000000000..33f5cc674
--- /dev/null
+++ b/sql_export_excel/static/description/index.html
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+SQL Export Excel
+
+
+
+
+
SQL Export Excel
+
+
+

+
Add the possibility to extract data from a sql query toward an excel file.
+It is also possible to provide an template excel file for a query. In this case,
+the data will be inserted in the specified sheet of the provided excel file. This
+is usefull when doing a lot of calculation in excel and the data is coming from Odoo.
+
Table of contents
+
+
+
+
If you want Odoo to update an existing excel file, you should create an attachment
+with the excel file and configure this attachment on the query.
+Then, you can configure the query to indicate if Odoo should export the header and where it should
+insert the data. By default, it will insert it in the first sheet, at first row/column.
+
+
+
+
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.
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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/server-tools project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
From 9655aa0fcd3880850c79e56c3a3c0a3e9152213d Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 28 Aug 2020 09:14:49 +0000
Subject: [PATCH 06/22] [ADD] icon.png
---
sql_export_excel/static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 sql_export_excel/static/description/icon.png
diff --git a/sql_export_excel/static/description/icon.png b/sql_export_excel/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
From 9bf78ac2764d8ee3510965cbc99e514ca3d2d54f Mon Sep 17 00:00:00 2001
From: Sylvain LE GAL
Date: Thu, 8 Apr 2021 12:23:27 +0200
Subject: [PATCH 07/22] [FIX] sql_export_excel: add missing dependency to
python lib openpyxl
---
sql_export_excel/__manifest__.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index 237b2df70..95cc1288b 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -12,6 +12,11 @@
'depends': [
'sql_export',
],
+ 'external_dependencies': {
+ 'python': [
+ 'openpyxl',
+ ],
+ },
'data': [
'views/sql_export_view.xml',
],
From 0937bf7265330d4d6812c8662c56d68b4bfd0d4d Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 30 Apr 2021 18:14:52 +0000
Subject: [PATCH 08/22] sql_export_excel 12.0.1.1.0
---
sql_export_excel/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index 95cc1288b..bc11bdc3b 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -3,7 +3,7 @@
{
'name': 'SQL Export Excel',
- 'version': '12.0.1.0.0',
+ 'version': '12.0.1.1.0',
'author': 'Akretion,Odoo Community Association (OCA)',
'website': 'http://github/oca/server-tools',
'license': 'AGPL-3',
From 3b578f7a4be10c4810a0a89ab129e90dd2b9c715 Mon Sep 17 00:00:00 2001
From: hkapatel
Date: Mon, 21 Jun 2021 18:18:03 +0530
Subject: [PATCH 09/22] [IMP] sql_export_excel: black, isort, prettier
---
sql_export_excel/__manifest__.py | 32 ++++-----
sql_export_excel/models/sql_export.py | 66 ++++++++++-------
.../tests/test_sql_query_excel.py | 72 ++++++++++---------
sql_export_excel/views/sql_export_view.xml | 27 +++++--
4 files changed, 114 insertions(+), 83 deletions(-)
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index bc11bdc3b..7e2f5d13c 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -2,23 +2,23 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
- 'name': 'SQL Export Excel',
- 'version': '12.0.1.1.0',
- 'author': 'Akretion,Odoo Community Association (OCA)',
- 'website': 'http://github/oca/server-tools',
- 'license': 'AGPL-3',
- 'category': 'Generic Modules/Others',
- 'summary': 'Allow to export a sql query to an excel file.',
- 'depends': [
- 'sql_export',
+ "name": "SQL Export Excel",
+ "version": "12.0.1.1.0",
+ "author": "Akretion,Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/server-tools",
+ "license": "AGPL-3",
+ "category": "Generic Modules/Others",
+ "summary": "Allow to export a sql query to an excel file.",
+ "depends": [
+ "sql_export",
],
- 'external_dependencies': {
- 'python': [
- 'openpyxl',
+ "external_dependencies": {
+ "python": [
+ "openpyxl",
],
},
- 'data': [
- 'views/sql_export_view.xml',
+ "data": [
+ "views/sql_export_view.xml",
],
- 'installable': True,
- }
+ "installable": True,
+}
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index 3479481e3..01a3f20f4 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -1,71 +1,79 @@
# Copyright 2019 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
-from odoo import api, exceptions, fields, models, _
-from io import BytesIO
-import logging
import base64
+import logging
+from io import BytesIO
+
+from odoo import _, api, exceptions, fields, models
+
_logger = logging.getLogger(__name__)
try:
import openpyxl
except ImportError:
- _logger.debug('Can not import openpyxl')
+ _logger.debug("Can not import openpyxl")
class SqlExport(models.Model):
- _inherit = 'sql.export'
+ _inherit = "sql.export"
- file_format = fields.Selection(
- selection_add=[('excel', 'Excel')])
+ file_format = fields.Selection(selection_add=[("excel", "Excel")])
header = fields.Boolean(
- default=True,
- help="Indicate if the header should be exported to the file.")
+ default=True, help="Indicate if the header should be exported to the file."
+ )
attachment_id = fields.Many2one(
- 'ir.attachment', string='Excel Template',
+ "ir.attachment",
+ string="Excel Template",
help="If you configure an excel file (in xlsx format) here, the "
- "result of the query will be injected in it.\nIt is usefull to "
- "feed data in a excel file pre-configured with calculation")
+ "result of the query will be injected in it.\nIt is usefull to "
+ "feed data in a excel file pre-configured with calculation",
+ )
sheet_position = fields.Integer(
default=1,
help="Indicate the sheet's position of the excel template where the "
- "result of the sql query should be injected.")
+ "result of the sql query should be injected.",
+ )
row_position = fields.Integer(
default=1,
- help="Indicate from which row the result of the query should be "
- "injected.")
+ help="Indicate from which row the result of the query should be " "injected.",
+ )
col_position = fields.Integer(
string="Column Position",
default=1,
help="Indicate from which column the result of the query should be "
- "injected.")
+ "injected.",
+ )
- @api.constrains('sheet_position')
+ @api.constrains("sheet_position")
def check_sheet_position(self):
for export in self:
if export.sheet_position < 1:
raise exceptions.ValidationError(
- _("The sheet position can't be less than 1."))
+ _("The sheet position can't be less than 1.")
+ )
- @api.constrains('row_position')
+ @api.constrains("row_position")
def check_row_position(self):
for export in self:
if export.row_position < 1:
raise exceptions.ValidationError(
- _("The row position can't be less than 1."))
+ _("The row position can't be less than 1.")
+ )
- @api.constrains('col_position')
+ @api.constrains("col_position")
def check_column_position(self):
for export in self:
if export.col_position < 1:
raise exceptions.ValidationError(
- _("The column position can't be less than 1."))
+ _("The column position can't be less than 1.")
+ )
@api.multi
def _get_file_extension(self):
self.ensure_one()
- if self.file_format == 'excel':
- return 'xlsx'
+ if self.file_format == "excel":
+ return "xlsx"
else:
return super()._get_file_extension()
@@ -73,7 +81,8 @@ class SqlExport(models.Model):
def excel_get_data_from_query(self, variable_dict):
self.ensure_one()
res = self._execute_sql_request(
- params=variable_dict, mode='fetchall', header=self.header)
+ params=variable_dict, mode="fetchall", header=self.header
+ )
# Case we insert data in an existing excel file.
if self.attachment_id:
datas = self.attachment_id.datas
@@ -86,8 +95,11 @@ class SqlExport(models.Model):
ws = sheets[self.sheet_position - 1]
except IndexError:
raise exceptions.ValidationError(
- _("The Excel Template file contains less than %s sheets "
- "Please, adjust the Sheet Position parameter."))
+ _(
+ "The Excel Template file contains less than %s sheets "
+ "Please, adjust the Sheet Position parameter."
+ )
+ )
row_position = self.row_position or 1
col_position = self.col_position or 1
# Case of excel file creation
diff --git a/sql_export_excel/tests/test_sql_query_excel.py b/sql_export_excel/tests/test_sql_query_excel.py
index 5711ccb7c..6ee1f3a1f 100644
--- a/sql_export_excel/tests/test_sql_query_excel.py
+++ b/sql_export_excel/tests/test_sql_query_excel.py
@@ -2,24 +2,24 @@
# @author: Florian da Costa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from odoo.tests.common import TransactionCase
import base64
-from io import BytesIO
import logging
+from io import BytesIO
+
+from odoo.tests.common import TransactionCase
_logger = logging.getLogger(__name__)
try:
import openpyxl
except ImportError:
- _logger.debug('Can not import openpyxl')
+ _logger.debug("Can not import openpyxl")
class TestExportSqlQueryExcel(TransactionCase):
-
def setUp(self):
super().setUp()
- self.wizard_obj = self.env['sql.file.wizard']
+ self.wizard_obj = self.env["sql.file.wizard"]
def get_workbook_from_query(self, wizard):
wizard.export_sql()
@@ -30,27 +30,29 @@ class TestExportSqlQueryExcel(TransactionCase):
def test_excel_file_generation(self):
test_query = "SELECT 'testcol1' as firstcol, 2 as second_col"
query_vals = {
- 'name': 'Test Query Excel',
- 'query': test_query,
- 'file_format': 'excel'
+ "name": "Test Query Excel",
+ "query": test_query,
+ "file_format": "excel",
}
- query = self.env['sql.export'].create(query_vals)
+ query = self.env["sql.export"].create(query_vals)
query.button_validate_sql_expression()
- wizard = self.wizard_obj.create({
- 'sql_export_id': query.id,
- })
+ wizard = self.wizard_obj.create(
+ {
+ "sql_export_id": query.id,
+ }
+ )
workbook = self.get_workbook_from_query(wizard)
ws = workbook.active
# Check values, header should be here by default
- self.assertEqual(ws.cell(row=1, column=1).value, 'firstcol')
- self.assertEqual(ws.cell(row=2, column=1).value, 'testcol1')
+ self.assertEqual(ws.cell(row=1, column=1).value, "firstcol")
+ self.assertEqual(ws.cell(row=2, column=1).value, "testcol1")
self.assertEqual(ws.cell(row=2, column=2).value, 2)
- query.write({'header': False})
+ query.write({"header": False})
wb2 = self.get_workbook_from_query(wizard)
ws2 = wb2.active
# Check values, the header should not be present
- self.assertEqual(ws2.cell(row=1, column=1).value, 'testcol1')
+ self.assertEqual(ws2.cell(row=1, column=1).value, "testcol1")
self.assertEqual(ws2.cell(row=1, column=2).value, 2)
def test_excel_file_insert(self):
@@ -60,8 +62,8 @@ class TestExportSqlQueryExcel(TransactionCase):
ws = wb.active
ws.cell(row=1, column=1, value="My Test Value")
ws2 = wb.create_sheet("data")
- ws2.cell(row=1, column=1, value='Partner Id')
- ws2.cell(row=1, column=2, value='Partner Name')
+ ws2.cell(row=1, column=1, value="Partner Id")
+ ws2.cell(row=1, column=2, value="Partner Name")
output = BytesIO()
wb.save(output)
data = output.getvalue()
@@ -69,10 +71,10 @@ class TestExportSqlQueryExcel(TransactionCase):
# Create attachment with the created xlsx file which will be used as
# template in the sql query
attachmnent_vals = {
- 'name': 'template xlsx sql export Res Partner',
- 'datas': base64.b64encode(data),
+ "name": "template xlsx sql export Res Partner",
+ "datas": base64.b64encode(data),
}
- attachment = self.env['ir.attachment'].create(attachmnent_vals)
+ attachment = self.env["ir.attachment"].create(attachmnent_vals)
# Create the query and configure it to insert the data in the second
# sheet of the xlsx template file and start inserting data at the
@@ -80,19 +82,21 @@ class TestExportSqlQueryExcel(TransactionCase):
# already contains a header)
test_query = "SELECT id, name FROM res_partner"
query_vals = {
- 'name': 'Test Query Excel',
- 'query': test_query,
- 'file_format': 'excel',
- 'attachment_id': attachment.id,
- 'sheet_position': 2,
- 'header': False,
- 'row_position': 2,
+ "name": "Test Query Excel",
+ "query": test_query,
+ "file_format": "excel",
+ "attachment_id": attachment.id,
+ "sheet_position": 2,
+ "header": False,
+ "row_position": 2,
}
- query = self.env['sql.export'].create(query_vals)
+ query = self.env["sql.export"].create(query_vals)
query.button_validate_sql_expression()
- wizard = self.wizard_obj.create({
- 'sql_export_id': query.id,
- })
+ wizard = self.wizard_obj.create(
+ {
+ "sql_export_id": query.id,
+ }
+ )
# Check the generated excel file. The first sheet should still contain
# the same data and the second sheet should have kept the header and
@@ -101,7 +105,7 @@ class TestExportSqlQueryExcel(TransactionCase):
sheets = wb2.worksheets
ws1 = sheets[0]
# Check values, header should be here by default
- self.assertEqual(ws1.cell(row=1, column=1).value, 'My Test Value')
+ self.assertEqual(ws1.cell(row=1, column=1).value, "My Test Value")
ws2 = sheets[1]
- self.assertEqual(ws2.cell(row=1, column=1).value, 'Partner Id')
+ self.assertEqual(ws2.cell(row=1, column=1).value, "Partner Id")
self.assertTrue(ws2.cell(row=2, column=1).value)
diff --git a/sql_export_excel/views/sql_export_view.xml b/sql_export_excel/views/sql_export_view.xml
index 98fc3981c..da26c0503 100644
--- a/sql_export_excel/views/sql_export_view.xml
+++ b/sql_export_excel/views/sql_export_view.xml
@@ -1,4 +1,4 @@
-
+
@@ -8,11 +8,26 @@
-
-
-
-
-
+
+
+
+
+
From 12fdc9c5c5e73cba026e32915c985f510e7ada69 Mon Sep 17 00:00:00 2001
From: hkapatel
Date: Wed, 23 Jun 2021 09:55:27 +0530
Subject: [PATCH 10/22] [MIG] sql_export_excel: Migration to 14.0
---
sql_export_excel/__manifest__.py | 6 ++----
sql_export_excel/models/sql_export.py | 6 +++---
sql_export_excel/readme/CONTRIBUTORS.rst | 1 +
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index 7e2f5d13c..3562741c8 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -3,15 +3,13 @@
{
"name": "SQL Export Excel",
- "version": "12.0.1.1.0",
+ "version": "14.0.1.1.0",
"author": "Akretion,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/server-tools",
"license": "AGPL-3",
"category": "Generic Modules/Others",
"summary": "Allow to export a sql query to an excel file.",
- "depends": [
- "sql_export",
- ],
+ "depends": ["sql_export"],
"external_dependencies": {
"python": [
"openpyxl",
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index 01a3f20f4..6165abe48 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -18,7 +18,9 @@ except ImportError:
class SqlExport(models.Model):
_inherit = "sql.export"
- file_format = fields.Selection(selection_add=[("excel", "Excel")])
+ file_format = fields.Selection(
+ selection_add=[("excel", "Excel")], ondelete={"excel": "set default"}
+ )
header = fields.Boolean(
default=True, help="Indicate if the header should be exported to the file."
)
@@ -69,7 +71,6 @@ class SqlExport(models.Model):
_("The column position can't be less than 1.")
)
- @api.multi
def _get_file_extension(self):
self.ensure_one()
if self.file_format == "excel":
@@ -77,7 +78,6 @@ class SqlExport(models.Model):
else:
return super()._get_file_extension()
- @api.multi
def excel_get_data_from_query(self, variable_dict):
self.ensure_one()
res = self._execute_sql_request(
diff --git a/sql_export_excel/readme/CONTRIBUTORS.rst b/sql_export_excel/readme/CONTRIBUTORS.rst
index 0bddb053a..c2183a83d 100644
--- a/sql_export_excel/readme/CONTRIBUTORS.rst
+++ b/sql_export_excel/readme/CONTRIBUTORS.rst
@@ -1 +1,2 @@
* Florian da Costa
+* Helly kapatel
From a680b1e55040926fcf142f3a5c09a4ef76898f93 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Thu, 29 Jul 2021 11:13:43 +0000
Subject: [PATCH 11/22] [UPD] README.rst
---
sql_export_excel/README.rst | 11 ++++++-----
sql_export_excel/static/description/index.html | 7 ++++---
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/sql_export_excel/README.rst b/sql_export_excel/README.rst
index ea24d59fe..2d3ebadf1 100644
--- a/sql_export_excel/README.rst
+++ b/sql_export_excel/README.rst
@@ -14,13 +14,13 @@ SQL Export Excel
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
- :target: https://github.com/OCA/server-tools/tree/12.0/sql_export_excel
+ :target: https://github.com/OCA/server-tools/tree/14.0/sql_export_excel
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-sql_export_excel
+ :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-sql_export_excel
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/149/12.0
+ :target: https://runbot.odoo-community.org/runbot/149/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -49,7 +49,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.
@@ -65,6 +65,7 @@ Contributors
~~~~~~~~~~~~
* Florian da Costa
+* Helly kapatel
Maintainers
~~~~~~~~~~~
@@ -79,6 +80,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/server-tools `_ project on GitHub.
+This module is part of the `OCA/server-tools `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sql_export_excel/static/description/index.html b/sql_export_excel/static/description/index.html
index 33f5cc674..4fb831b8f 100644
--- a/sql_export_excel/static/description/index.html
+++ b/sql_export_excel/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Add the possibility to extract data from a sql query toward an excel file.
It is also possible to provide an template excel file for a query. In this case,
the data will be inserted in the specified sheet of the provided excel file. This
@@ -397,7 +397,7 @@ insert the data. By default, it will insert it in the first sheet, at first row/
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.
@@ -412,6 +412,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
@@ -421,7 +422,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/server-tools project on GitHub.
+
This module is part of the OCA/server-tools project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
From 782ba3cc45715459216790737e37705e100d8579 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Fri, 6 Aug 2021 07:02:51 +0000
Subject: [PATCH 12/22] [UPD] Update sql_export_excel.pot
---
sql_export_excel/i18n/sql_export_excel.pot | 55 +++++++++++++++-------
1 file changed, 37 insertions(+), 18 deletions(-)
diff --git a/sql_export_excel/i18n/sql_export_excel.pot b/sql_export_excel/i18n/sql_export_excel.pot
index 7a178edff..cc6eb97ab 100644
--- a/sql_export_excel/i18n/sql_export_excel.pot
+++ b/sql_export_excel/i18n/sql_export_excel.pot
@@ -1,30 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * sql_export_excel
+# * sql_export_excel
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: sql_export_excel
-#: selection:sql.export,file_format:0
-msgid "CSV"
-msgstr ""
-
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
msgid "Column Position"
msgstr ""
#. module: sql_export_excel
-#: selection:sql.export,file_format:0
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields.selection,name:sql_export_excel.selection__sql_export__file_format__excel
msgid "Excel"
msgstr ""
@@ -43,9 +43,15 @@ msgstr ""
msgid "Header"
msgstr ""
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__id
+msgid "ID"
+msgstr ""
+
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__attachment_id
-msgid "If you configure an excel file (in xlsx format) here, the result of the query will be injected in it.\n"
+msgid ""
+"If you configure an excel file (in xlsx format) here, the result of the query will be injected in it.\n"
"It is usefull to feed data in a excel file pre-configured with calculation"
msgstr ""
@@ -66,7 +72,14 @@ msgstr ""
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__sheet_position
-msgid "Indicate the sheet's position of the excel template where the result of the sql query should be injected."
+msgid ""
+"Indicate the sheet's position of the excel template where the result of the "
+"sql query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export____last_update
+msgid "Last Modified on"
msgstr ""
#. module: sql_export_excel
@@ -85,26 +98,32 @@ msgid "Sheet Position"
msgstr ""
#. module: sql_export_excel
-#: code:addons/sql_export_excel/models/sql_export.py:89
-#, python-format
-msgid "The Excel Template file contains less than %s sheets Please, adjust the Sheet Position parameter."
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__smart_search
+msgid "Smart Search"
msgstr ""
#. module: sql_export_excel
-#: code:addons/sql_export_excel/models/sql_export.py:62
+#: code:addons/sql_export_excel/models/sql_export.py:0
+#, python-format
+msgid ""
+"The Excel Template file contains less than %s sheets Please, adjust the "
+"Sheet Position parameter."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The column position can't be less than 1."
msgstr ""
#. module: sql_export_excel
-#: code:addons/sql_export_excel/models/sql_export.py:55
+#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The row position can't be less than 1."
msgstr ""
#. module: sql_export_excel
-#: code:addons/sql_export_excel/models/sql_export.py:48
+#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The sheet position can't be less than 1."
msgstr ""
-
From a66df4026f33b6c92395a4a0202498acf7fd4fe5 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Thu, 2 Sep 2021 14:18:35 +0000
Subject: [PATCH 13/22] [UPD] Update sql_export_excel.pot
---
sql_export_excel/i18n/sql_export_excel.pot | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/sql_export_excel/i18n/sql_export_excel.pot b/sql_export_excel/i18n/sql_export_excel.pot
index cc6eb97ab..cfdca2ab9 100644
--- a/sql_export_excel/i18n/sql_export_excel.pot
+++ b/sql_export_excel/i18n/sql_export_excel.pot
@@ -13,11 +13,31 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__changeset_change_ids
+msgid "Changeset Changes"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__changeset_ids
+msgid "Changesets"
+msgstr ""
+
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
msgid "Column Position"
msgstr ""
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__count_pending_changeset_changes
+msgid "Count Pending Changeset Changes"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__count_pending_changesets
+msgid "Count Pending Changesets"
+msgstr ""
+
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__display_name
msgid "Display Name"
@@ -127,3 +147,8 @@ msgstr ""
#, python-format
msgid "The sheet position can't be less than 1."
msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__user_can_see_changeset
+msgid "User Can See Changeset"
+msgstr ""
From a09944e90ffb7235ca62ab4c755b42778c417d00 Mon Sep 17 00:00:00 2001
From: Maksym Yankin
Date: Mon, 31 Jan 2022 16:01:30 +0200
Subject: [PATCH 14/22] [IMP] sql_export_excel: pylint
---
sql_export_excel/models/sql_export.py | 4 +--
sql_export_excel/views/sql_export_view.xml | 37 ++++++++++------------
2 files changed, 19 insertions(+), 22 deletions(-)
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index 6165abe48..53cde9f07 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -93,13 +93,13 @@ class SqlExport(models.Model):
sheets = wb.worksheets
try:
ws = sheets[self.sheet_position - 1]
- except IndexError:
+ except IndexError as err:
raise exceptions.ValidationError(
_(
"The Excel Template file contains less than %s sheets "
"Please, adjust the Sheet Position parameter."
)
- )
+ ) from err
row_position = self.row_position or 1
col_position = self.col_position or 1
# Case of excel file creation
diff --git a/sql_export_excel/views/sql_export_view.xml b/sql_export_excel/views/sql_export_view.xml
index da26c0503..92669eef7 100644
--- a/sql_export_excel/views/sql_export_view.xml
+++ b/sql_export_excel/views/sql_export_view.xml
@@ -1,7 +1,5 @@
-
-
-
+
sql.export
@@ -9,28 +7,27 @@
+ name="header"
+ attrs="{'invisible': [('file_format', '=', 'csv')]}"
+ />
+ name="attachment_id"
+ attrs="{'invisible': [('file_format', '!=', 'excel')]}"
+ />
+ name="sheet_position"
+ attrs="{'invisible': [('attachment_id', '=', False)]}"
+ />
+ name="row_position"
+ attrs="{'invisible': [('attachment_id', '=', False)]}"
+ />
+ name="col_position"
+ attrs="{'invisible': [('attachment_id', '=', False)]}"
+ />
-
-
+
From eba26403e2a55e59cfc7a45e3726f3538479a8d6 Mon Sep 17 00:00:00 2001
From: Maksym Yankin
Date: Mon, 31 Jan 2022 16:04:01 +0200
Subject: [PATCH 15/22] [MIG] sql_export_excel: Migration to 15.0
---
sql_export_excel/README.rst | 14 +++++++-------
sql_export_excel/__manifest__.py | 4 ++--
sql_export_excel/i18n/sql_export_excel.pot | 2 +-
sql_export_excel/static/description/index.html | 8 ++++----
sql_export_excel/tests/test_sql_query_excel.py | 7 ++++---
5 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/sql_export_excel/README.rst b/sql_export_excel/README.rst
index 2d3ebadf1..01f868200 100644
--- a/sql_export_excel/README.rst
+++ b/sql_export_excel/README.rst
@@ -14,13 +14,13 @@ SQL Export Excel
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
- :target: https://github.com/OCA/server-tools/tree/14.0/sql_export_excel
- :alt: OCA/server-tools
+ :target: https://github.com/OCA/reporting-engine/tree/15.0/sql_export_excel
+ :alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-sql_export_excel
+ :target: https://translation.odoo-community.org/projects/reporting-engine-15-0/reporting-engine-15-0-sql_export_excel
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/149/14.0
+ :target: https://runbot.odoo-community.org/runbot/149/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -46,10 +46,10 @@ insert the data. By default, it will insert it in the first sheet, at first row/
Bug Tracker
===========
-Bugs are tracked on `GitHub Issues `_.
+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,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/server-tools `_ project on GitHub.
+This module is part of the `OCA/reporting-engine `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index 3562741c8..99d3063eb 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -3,9 +3,9 @@
{
"name": "SQL Export Excel",
- "version": "14.0.1.1.0",
+ "version": "15.0.1.0.0",
"author": "Akretion,Odoo Community Association (OCA)",
- "website": "https://github.com/OCA/server-tools",
+ "website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
"category": "Generic Modules/Others",
"summary": "Allow to export a sql query to an excel file.",
diff --git a/sql_export_excel/i18n/sql_export_excel.pot b/sql_export_excel/i18n/sql_export_excel.pot
index cfdca2ab9..a3b912de0 100644
--- a/sql_export_excel/i18n/sql_export_excel.pot
+++ b/sql_export_excel/i18n/sql_export_excel.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
diff --git a/sql_export_excel/static/description/index.html b/sql_export_excel/static/description/index.html
index 4fb831b8f..0c2222e48 100644
--- a/sql_export_excel/static/description/index.html
+++ b/sql_export_excel/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Add the possibility to extract data from a sql query toward an excel file.
It is also possible to provide an template excel file for a query. In this case,
the data will be inserted in the specified sheet of the provided excel file. This
@@ -394,10 +394,10 @@ insert the data. By default, it will insert it in the first sheet, at first row/
-
Bugs are tracked on GitHub Issues.
+
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.
@@ -422,7 +422,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/server-tools project on GitHub.
+
This module is part of the OCA/reporting-engine project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/sql_export_excel/tests/test_sql_query_excel.py b/sql_export_excel/tests/test_sql_query_excel.py
index 6ee1f3a1f..7dc03c5a9 100644
--- a/sql_export_excel/tests/test_sql_query_excel.py
+++ b/sql_export_excel/tests/test_sql_query_excel.py
@@ -17,9 +17,10 @@ except ImportError:
class TestExportSqlQueryExcel(TransactionCase):
- def setUp(self):
- super().setUp()
- self.wizard_obj = self.env["sql.file.wizard"]
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.wizard_obj = cls.env["sql.file.wizard"]
def get_workbook_from_query(self, wizard):
wizard.export_sql()
From 8a2fd94af8db538ee525549f48279c1ad806660f Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Wed, 2 Feb 2022 07:46:43 +0000
Subject: [PATCH 16/22] [UPD] Update sql_export_excel.pot
---
sql_export_excel/i18n/sql_export_excel.pot | 45 ----------------------
1 file changed, 45 deletions(-)
diff --git a/sql_export_excel/i18n/sql_export_excel.pot b/sql_export_excel/i18n/sql_export_excel.pot
index a3b912de0..ce27a4f1f 100644
--- a/sql_export_excel/i18n/sql_export_excel.pot
+++ b/sql_export_excel/i18n/sql_export_excel.pot
@@ -13,36 +13,11 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__changeset_change_ids
-msgid "Changeset Changes"
-msgstr ""
-
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__changeset_ids
-msgid "Changesets"
-msgstr ""
-
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
msgid "Column Position"
msgstr ""
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__count_pending_changeset_changes
-msgid "Count Pending Changeset Changes"
-msgstr ""
-
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__count_pending_changesets
-msgid "Count Pending Changesets"
-msgstr ""
-
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__display_name
-msgid "Display Name"
-msgstr ""
-
#. module: sql_export_excel
#: model:ir.model.fields.selection,name:sql_export_excel.selection__sql_export__file_format__excel
msgid "Excel"
@@ -63,11 +38,6 @@ msgstr ""
msgid "Header"
msgstr ""
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__id
-msgid "ID"
-msgstr ""
-
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__attachment_id
msgid ""
@@ -97,11 +67,6 @@ msgid ""
"sql query should be injected."
msgstr ""
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export____last_update
-msgid "Last Modified on"
-msgstr ""
-
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__row_position
msgid "Row Position"
@@ -117,11 +82,6 @@ msgstr ""
msgid "Sheet Position"
msgstr ""
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__smart_search
-msgid "Smart Search"
-msgstr ""
-
#. module: sql_export_excel
#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
@@ -147,8 +107,3 @@ msgstr ""
#, python-format
msgid "The sheet position can't be less than 1."
msgstr ""
-
-#. module: sql_export_excel
-#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__user_can_see_changeset
-msgid "User Can See Changeset"
-msgstr ""
From 574b8c5845e9b8cc47fcc5988c7ac4de7a6c8b43 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Wed, 2 Feb 2022 07:49:09 +0000
Subject: [PATCH 17/22] [UPD] README.rst
---
sql_export_excel/README.rst | 4 ++--
sql_export_excel/static/description/index.html | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sql_export_excel/README.rst b/sql_export_excel/README.rst
index 01f868200..db8142341 100644
--- a/sql_export_excel/README.rst
+++ b/sql_export_excel/README.rst
@@ -13,14 +13,14 @@ SQL Export Excel
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
-.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
:target: https://github.com/OCA/reporting-engine/tree/15.0/sql_export_excel
:alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/reporting-engine-15-0/reporting-engine-15-0-sql_export_excel
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/149/15.0
+ :target: https://runbot.odoo-community.org/runbot/143/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
diff --git a/sql_export_excel/static/description/index.html b/sql_export_excel/static/description/index.html
index 0c2222e48..1b0f536af 100644
--- a/sql_export_excel/static/description/index.html
+++ b/sql_export_excel/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

Add the possibility to extract data from a sql query toward an excel file.
It is also possible to provide an template excel file for a query. In this case,
the data will be inserted in the specified sheet of the provided excel file. This
From 3c2b2ac5b4c21eeb01f6a0146326066eec700982 Mon Sep 17 00:00:00 2001
From: jabelchi
Date: Wed, 15 Jun 2022 15:38:14 +0000
Subject: [PATCH 18/22] Added translation using Weblate (Catalan)
---
sql_export_excel/i18n/ca.po | 110 ++++++++++++++++++++++++++++++++++++
1 file changed, 110 insertions(+)
create mode 100644 sql_export_excel/i18n/ca.po
diff --git a/sql_export_excel/i18n/ca.po b/sql_export_excel/i18n/ca.po
new file mode 100644
index 000000000..c9b37708d
--- /dev/null
+++ b/sql_export_excel/i18n/ca.po
@@ -0,0 +1,110 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * sql_export_excel
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
+msgid "Column Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields.selection,name:sql_export_excel.selection__sql_export__file_format__excel
+msgid "Excel"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__attachment_id
+msgid "Excel Template"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__file_format
+msgid "File Format"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__header
+msgid "Header"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__attachment_id
+msgid ""
+"If you configure an excel file (in xlsx format) here, the result of the query will be injected in it.\n"
+"It is usefull to feed data in a excel file pre-configured with calculation"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__col_position
+msgid "Indicate from which column the result of the query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__row_position
+msgid "Indicate from which row the result of the query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__header
+msgid "Indicate if the header should be exported to the file."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,help:sql_export_excel.field_sql_export__sheet_position
+msgid ""
+"Indicate the sheet's position of the excel template where the result of the "
+"sql query should be injected."
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__row_position
+msgid "Row Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model,name:sql_export_excel.model_sql_export
+msgid "SQL export"
+msgstr ""
+
+#. module: sql_export_excel
+#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__sheet_position
+msgid "Sheet Position"
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:0
+#, python-format
+msgid ""
+"The Excel Template file contains less than %s sheets Please, adjust the "
+"Sheet Position parameter."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:0
+#, python-format
+msgid "The column position can't be less than 1."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:0
+#, python-format
+msgid "The row position can't be less than 1."
+msgstr ""
+
+#. module: sql_export_excel
+#: code:addons/sql_export_excel/models/sql_export.py:0
+#, python-format
+msgid "The sheet position can't be less than 1."
+msgstr ""
From a55e0e0165dbd74630148b67f0039e7c81d69518 Mon Sep 17 00:00:00 2001
From: jabelchi
Date: Wed, 15 Jun 2022 15:47:00 +0000
Subject: [PATCH 19/22] Translated using Weblate (Catalan)
Currently translated at 100.0% (17 of 17 strings)
Translation: reporting-engine-15.0/reporting-engine-15.0-sql_export_excel
Translate-URL: https://translation.odoo-community.org/projects/reporting-engine-15-0/reporting-engine-15-0-sql_export_excel/ca/
---
sql_export_excel/i18n/ca.po | 38 ++++++++++++++++++++++++-------------
1 file changed, 25 insertions(+), 13 deletions(-)
diff --git a/sql_export_excel/i18n/ca.po b/sql_export_excel/i18n/ca.po
index c9b37708d..8f64f3b39 100644
--- a/sql_export_excel/i18n/ca.po
+++ b/sql_export_excel/i18n/ca.po
@@ -6,38 +6,40 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2022-06-15 18:05+0000\n"
+"Last-Translator: jabelchi \n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__col_position
msgid "Column Position"
-msgstr ""
+msgstr "Posició columna"
#. module: sql_export_excel
#: model:ir.model.fields.selection,name:sql_export_excel.selection__sql_export__file_format__excel
msgid "Excel"
-msgstr ""
+msgstr "Excel"
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__attachment_id
msgid "Excel Template"
-msgstr ""
+msgstr "Plantilla Excel"
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__file_format
msgid "File Format"
-msgstr ""
+msgstr "Format de fitxer"
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__header
msgid "Header"
-msgstr ""
+msgstr "Capçalera"
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__attachment_id
@@ -45,21 +47,27 @@ msgid ""
"If you configure an excel file (in xlsx format) here, the result of the query will be injected in it.\n"
"It is usefull to feed data in a excel file pre-configured with calculation"
msgstr ""
+"Si configureu aquí un fitxer Excel (en format xlsx), s'hi injectarà el "
+"resultat de la consulta.\n"
+"Això és útil per a carregar dades en un fitxer Excel pre-configurat amb "
+"càlculs"
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__col_position
msgid "Indicate from which column the result of the query should be injected."
msgstr ""
+"Indiqueu des de quina columna ha de carregar-se el resultat de la consulta."
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__row_position
msgid "Indicate from which row the result of the query should be injected."
msgstr ""
+"Indiqueu des de quina fila ha de carregar-se el resultat de la consulta."
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__header
msgid "Indicate if the header should be exported to the file."
-msgstr ""
+msgstr "Indiqueu si la capçalera ha d'exportar-se al fitxer."
#. module: sql_export_excel
#: model:ir.model.fields,help:sql_export_excel.field_sql_export__sheet_position
@@ -67,21 +75,23 @@ msgid ""
"Indicate the sheet's position of the excel template where the result of the "
"sql query should be injected."
msgstr ""
+"Indiqueu la posició del full de la plantilla Excel on s'ha de carregar el "
+"resultat de la consulta SQL."
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__row_position
msgid "Row Position"
-msgstr ""
+msgstr "Posició fila"
#. module: sql_export_excel
#: model:ir.model,name:sql_export_excel.model_sql_export
msgid "SQL export"
-msgstr ""
+msgstr "Exportació SQL"
#. module: sql_export_excel
#: model:ir.model.fields,field_description:sql_export_excel.field_sql_export__sheet_position
msgid "Sheet Position"
-msgstr ""
+msgstr "Posició del full"
#. module: sql_export_excel
#: code:addons/sql_export_excel/models/sql_export.py:0
@@ -90,21 +100,23 @@ msgid ""
"The Excel Template file contains less than %s sheets Please, adjust the "
"Sheet Position parameter."
msgstr ""
+"La plantilla Excel conté menys de %s fulls. Si us plau, corregiu el "
+"paràmetre de la posició del full."
#. module: sql_export_excel
#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The column position can't be less than 1."
-msgstr ""
+msgstr "La posició de la columna no pot ser menor que 1."
#. module: sql_export_excel
#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The row position can't be less than 1."
-msgstr ""
+msgstr "La posició de la fila no pot ser menor que 1."
#. module: sql_export_excel
#: code:addons/sql_export_excel/models/sql_export.py:0
#, python-format
msgid "The sheet position can't be less than 1."
-msgstr ""
+msgstr "La posició del full no pot ser menor que 1."
From 9b5579e79b5d857ce057fc4eda9196a86a683151 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Tue, 13 Dec 2022 20:46:13 +0100
Subject: [PATCH 20/22] [IMP] sql_export_excel: black, isort, prettier
---
requirements.txt | 1 +
setup/sql_export_excel/odoo/addons/sql_export_excel | 1 +
setup/sql_export_excel/setup.py | 6 ++++++
3 files changed, 8 insertions(+)
create mode 120000 setup/sql_export_excel/odoo/addons/sql_export_excel
create mode 100644 setup/sql_export_excel/setup.py
diff --git a/requirements.txt b/requirements.txt
index ca809738c..8bb8cc386 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,6 @@
# generated from manifests external_dependencies
lxml
+openpyxl
py3o.formats
py3o.template
PyPDF2
diff --git a/setup/sql_export_excel/odoo/addons/sql_export_excel b/setup/sql_export_excel/odoo/addons/sql_export_excel
new file mode 120000
index 000000000..fe30a58d4
--- /dev/null
+++ b/setup/sql_export_excel/odoo/addons/sql_export_excel
@@ -0,0 +1 @@
+../../../../sql_export_excel
\ No newline at end of file
diff --git a/setup/sql_export_excel/setup.py b/setup/sql_export_excel/setup.py
new file mode 100644
index 000000000..28c57bb64
--- /dev/null
+++ b/setup/sql_export_excel/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)
From 36aaf3e8714a6c5f4128e7d063789f2cfab64300 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Tue, 13 Dec 2022 21:04:35 +0100
Subject: [PATCH 21/22] [16.0][MIG] sql_export_excel : migration to v16
---
sql_export_excel/__manifest__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sql_export_excel/__manifest__.py b/sql_export_excel/__manifest__.py
index 99d3063eb..6fc1f0c99 100644
--- a/sql_export_excel/__manifest__.py
+++ b/sql_export_excel/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "SQL Export Excel",
- "version": "15.0.1.0.0",
+ "version": "16.0.1.0.0",
"author": "Akretion,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
From fe71ae7bcebdb0563fce5717e28056b9016bb1af Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Fri, 3 Mar 2023 10:05:02 +0100
Subject: [PATCH 22/22] [FIX] Manage jsonb fields
---
sql_export_excel/models/sql_export.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sql_export_excel/models/sql_export.py b/sql_export_excel/models/sql_export.py
index 53cde9f07..68194c52e 100644
--- a/sql_export_excel/models/sql_export.py
+++ b/sql_export_excel/models/sql_export.py
@@ -110,6 +110,9 @@ class SqlExport(models.Model):
col_position = 1
for index, row in enumerate(res, row_position):
for col, val in enumerate(row, col_position):
+ # manage jsonb field as dict are not writable on the excel cell
+ if isinstance(val, dict):
+ val = str(val)
ws.cell(row=index, column=col).value = val
output = BytesIO()
wb.save(output)