Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[17.0] mig-excel_import_export #2991

Open
wants to merge 91 commits into
base: 17.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
ef0294d
Excel Import/Export/Report (#1522)
kittiu Mar 14, 2019
e5ab999
[UPD] README.rst
OCA-git-bot Mar 14, 2019
2f29ab4
[UPD] Update excel_import_export.pot
oca-travis Mar 15, 2019
2a33610
[12.0][FIX] excel_import_export
kittiu Apr 2, 2019
c909058
[ADD] icon.png
OCA-git-bot Apr 3, 2019
b2c1b5e
[UPD] README.rst
OCA-git-bot Jul 29, 2019
e09e2fc
[12.0][FIX] excel_import_export
kittiu Jun 19, 2019
594a564
[UPD] Update excel_import_export.pot
oca-travis Aug 5, 2019
28894ae
[UPD] README.rst
OCA-git-bot Aug 5, 2019
72c867b
[12.0][FIX] excel_import_export, use sudo() to get param
kittiu Aug 7, 2019
ed296e7
[UPD] README.rst
OCA-git-bot Aug 9, 2019
4db2a25
[12.0][IMP] excel_import_export, excel_import_export_demo
kittiu Aug 9, 2019
8684e15
[UPD] Update excel_import_export.pot
oca-travis Aug 26, 2019
2ee3104
[UPD] README.rst
OCA-git-bot Aug 26, 2019
ced0808
[12.0][FIX] excel_import_export, fix wrong file name on report_action
kittiu Aug 27, 2019
048bb61
[12.0][FIX] excel_import_export - Style sum footer to number
Saran440 Aug 28, 2019
cdc911a
[UPD] Update excel_import_export.pot
oca-travis Aug 30, 2019
1cf847a
[UPD] README.rst
OCA-git-bot Aug 30, 2019
859fc2a
Added translation using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
eb5e645
Translated using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
ddd78f7
Translated using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
160ae60
Translated using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
de99bcf
Translated using Weblate (Chinese (Simplified))
liweijie0812 Aug 31, 2019
a7a5a5f
[UPD] README.rst
OCA-git-bot Sep 5, 2019
ef4cf98
[12.0][ENH] excel_import_export, faster export
kittiu Nov 19, 2019
ddf2092
[UPD] Update excel_import_export.pot
oca-travis Nov 21, 2019
6c370cb
[UPD] README.rst
OCA-git-bot Nov 21, 2019
63412c2
Update translation files
oca-transbot Nov 21, 2019
2fadbec
[UPD] Update excel_import_export.pot
oca-travis Feb 20, 2020
fb4017f
Update translation files
oca-transbot Feb 20, 2020
f7b4b89
[12.0][FIX] excel_import_export, problem on import with datetime field
kittiu Mar 15, 2020
293d4e1
[UPD] Update excel_import_export.pot
oca-travis Apr 2, 2020
b500e8b
Update translation files
oca-transbot Apr 2, 2020
fa40c19
[IMP] : black, isort, prettier
kittiu Aug 24, 2020
9c9a342
[13.0][MIG] excel_import_export, excel_import_export_demo
kittiu Aug 24, 2020
dcc73a5
[IMP] excel_import_export: black, isort, prettier
kittiu Feb 13, 2021
e2ef2f2
[14.0][MIG] excel_import_export, excel_import_export_demo
kittiu Feb 13, 2021
c840ef3
[UPD] Update excel_import_export.pot
oca-travis Jul 10, 2021
19a9296
[UPD] README.rst
OCA-git-bot Jul 10, 2021
041accd
[UPD] Update excel_import_export.pot
oca-travis Aug 26, 2021
942dd43
Update translation files
oca-transbot Aug 26, 2021
8c0dd4d
[UPD] Update excel_import_export.pot
oca-travis Sep 2, 2021
c635035
Update translation files
oca-transbot Sep 2, 2021
22e5c6c
Added translation using Weblate (Italian)
alessandro-fiorino Jan 14, 2022
d646627
Translated using Weblate (Italian)
alessandro-fiorino Jan 14, 2022
37f74cd
Translated using Weblate (Italian)
alessandro-fiorino Jan 14, 2022
7a14aac
Translated using Weblate (Italian)
francesco-ooops Mar 16, 2022
b651dd2
[IMP] update dotfiles
OCA-git-bot Mar 30, 2022
f759941
Translated using Weblate (Italian)
alessandro-fiorino May 13, 2022
469b7e1
[REF] excel_import_export: remove xlrd & xlwt from external dependencies
luisg123v May 27, 2022
7a06ed9
excel_import_export 14.0.1.1.0
OCA-git-bot May 28, 2022
444fcee
Added translation using Weblate (Spanish (Argentina))
ibuioli Aug 20, 2022
891dfab
Translated using Weblate (Spanish (Argentina))
ibuioli Aug 20, 2022
9fc3d31
[15,0][MIG] excel_import_export, excel_import_export_demo:
Mantux11 Apr 29, 2022
ed477b0
[15.0][FIX] excel_import_export, excel_import_export_demo:
Mantux11 Nov 24, 2022
4d3fe6f
[MIG] excel_import_export, excel_import_export_demo: Migration to 16.0
AungKoKoLin1997 Dec 20, 2022
0d3c282
[FIX] Not overriding the create method during installation
AungKoKoLin1997 Mar 22, 2023
39397b8
[UPD] Update excel_import_export.pot
Apr 18, 2023
c183ffa
[UPD] README.rst
OCA-git-bot Apr 18, 2023
84ae238
Update translation files
weblate Apr 19, 2023
d66e7a1
Translated using Weblate (Italian)
francesco-ooops May 24, 2023
ab122b0
Translated using Weblate (Italian)
mymage Jun 7, 2023
5308522
[UPD] Update excel_import_export.pot
Jun 7, 2023
6d76681
Translated using Weblate (Italian)
mymage Jun 7, 2023
e3c0fc9
Update translation files
weblate Jun 7, 2023
fda6f06
Translated using Weblate (Italian)
mymage Jun 14, 2023
2330566
[UPD] Update excel_import_export.pot
Sep 1, 2023
c324c6d
Added translation using Weblate (Spanish)
Ivorra78 Aug 25, 2023
3907b5e
Translated using Weblate (Spanish)
Ivorra78 Aug 25, 2023
9c971d9
Update translation files
weblate Sep 3, 2023
9cd5721
[UPD] README.rst
OCA-git-bot Sep 3, 2023
eef3f4a
Translated using Weblate (Italian)
mymage Sep 20, 2023
5006557
Translated using Weblate (Italian)
mymage Sep 21, 2023
89430ed
Translated using Weblate (Italian)
mymage Oct 12, 2023
f5f18a1
Translated using Weblate (Italian)
mymage Nov 3, 2023
d041daf
[REF] excel_import_export: hooks are added so that they can be inherited
RodrigoBM Oct 27, 2023
8f81e9e
[BOT] post-merge updates
OCA-git-bot Nov 9, 2023
b1df02a
[IMP] excel_import_export: Set import wizard filename
PauBForgeFlow Dec 1, 2023
38e18fd
[UPD] Update excel_import_export.pot
Dec 24, 2023
54e0567
[BOT] post-merge updates
OCA-git-bot Dec 24, 2023
de825fa
Update translation files
weblate Dec 24, 2023
a8d76b9
Translated using Weblate (Spanish)
Ivorra78 Dec 29, 2023
362672a
Translated using Weblate (Italian)
mymage Dec 29, 2023
135c9bd
Translated using Weblate (Italian)
mymage Jan 8, 2024
8b7e5d8
Translated using Weblate (Italian)
mymage Jan 9, 2024
51ac986
Translated using Weblate (Italian)
mymage Jan 18, 2024
c7f026b
[UPD] Update excel_import_export.pot
Feb 2, 2024
c247e1a
Update translation files
weblate Feb 2, 2024
a88db14
Translated using Weblate (Italian)
mymage Feb 5, 2024
7eac028
[IMP] excel_import_export: pre-commit auto fixes
Josep-s73 Jul 17, 2024
7bfa83f
[MIG] excel_import_export: Migration to 17.0
Josep-s73 Jul 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
243 changes: 243 additions & 0 deletions excel_import_export/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
==========================
Excel Import/Export/Report
==========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:71e187de9ab7723f404469d47ee695cf540260f860ccdd3ec12963a1a4b52ea7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/17.0/excel_import_export
: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-17-0/server-tools-17-0-excel_import_export
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

The module provide pre-built functions and wizards for developer to
build excel import / export / report with ease.

Without having to code to create excel file, developer do,

- Create menu, action, wizard, model, view a normal Odoo development.
- Design excel template using standard Excel application, e.g., colors,
fonts, formulas, etc.
- Instruct how the data will be located in Excel with simple dictionary
instruction or from Odoo UI.
- Odoo will combine instruction with excel template, and result in
final excel file.

**Table of contents**

.. contents::
:local:

Installation
============

To install this module, you need to install following python library,
**xlrd, xlwt, openpyxl**.

Then, simply install **excel_import_export**.

For demo, install **excel_import_export_demo**

Usage
=====

Concepts
--------

This module contain pre-defined function and wizards to make exporting,
importing and reporting easy.

At the heart of this module, there are 2 main methods

- ``self.env['xlsx.export'].export_xlsx(...)``
- ``self.env['xlsx.import'].import_xlsx(...)``

For reporting, also call export_xlsx(...) but through following method

- ``self.env['xslx.report'].report_xlsx(...)``

After install this module, go to Settings > Excel Import/Export > XLSX
Templates, this is where the key component located.

As this module provide tools, it is best to explain as use cases. For
example use cases, please install **excel_import_export_demo**

Use Cases
---------

**Use Case 1:** Export/Import Excel on existing document

This add export/import action menus in existing document (example -
excel_import_export_demo/import_export_sale_order)

1. Create export action menu on document, <act_window> with
res_model="export.xlsx.wizard" and src_model="<document_model>", and
context['template_domain'] to locate the right template --
actions.xml
2. Create import action menu on document, <act_window> with
res_model="import.xlsx.wizard" and src_model="<document_model>", and
context['template_domain'] to locate the right template -- action.xml
3. Create/Design Excel Template File (.xlsx), in the template, name the
underlining tab used for export/import -- <file>.xlsx
4. Create instruction dictionary for export/import in xlsx.template
model -- templates.xml

**Use Case 2:** Import Excel Files

With menu wizard to create new documents (example -
excel_import_export_demo/import_sale_orders)

1. Create report menu with search wizard, res_model="import.xlsx.wizard"
and context['template_domain'] to locate the right template --
menu_action.xml
2. Create Excel Template File (.xlsx), in the template, name the
underlining tab used for import -- <import file>.xlsx
3. Create instruction dictionary for import in xlsx.template model --
templates.xml

**Use Case 3:** Create Excel Report

This create report menu with criteria wizard. (example -
excel_import_export_demo/report_sale_order)

1. Create report's menu, action, and add context['template_domain'] to
locate the right template for this report -- <report>.xml
2. Create report's wizard for search criteria. The view inherits
``excel_import_export.xlsx_report_view`` and mode="primary". In this
view, you only need to add criteria fields, the rest will reuse from
interited view -- <report.xml>
3. Create report model as models.Transient, then define search criteria
fields, and get reporing data into ``results`` field -- <report>.py
4. Create/Design Excel Template File (.xlsx), in the template, name the
underlining tab used for report results -- <report_file>.xlsx
5. Create instruction dictionary for report in xlsx.template model --
templates.xml

**Note:**

Another option for reporting is to use report action
(report_type='excel'), I.e.,

.. code:: xml

<report id='action_report_saleorder_excel'
string='Quotation / Order (.xlsx)'
model='sale.order'
name='sale_order.xlsx'
file='sale_order'
report_type='excel'
/>

By using report action, Odoo will find template using combination of
model and name, then do the export for the underlining record. Please
see example in excel_import_export_demo/report_action, which shows,

1. Print excel from an active sale.order
2. Run partner list report based on search criteria.

Easy Reporting Option
---------------------

Technically, this option is the same as "Create Excel Report" use case.
But instead of having to write XML / Python code like normally do, this
option allow user to create a report based on a model or view, all by
configuration only.

1. Goto > Technical> Excel Import/Export > XLSX Templates, and create a
new template for a report.
2. On the new template, select "Easy Reporting" option, then select
followings

- Report Model, this can be data model or data view we want to get
the results from.
- Click upload your file and add the excel template (.xlsx)
- Click Save, system will create sample export line, user can add
more fields according to results model.

3. Click Add Report Menu, the report menu will be created, user can
change its location. Now the report is ready to use.

..

|image1|

Note: Using easy reporting mode, system will used a common criteria
wizard.

|image2|

.. |image1| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/excel_import_export/static/description/xlsx_template.png
.. |image2| image:: https://raw.githubusercontent.com/OCA/server-tools/17.0/excel_import_export/static/description/common_wizard.png

Known issues / Roadmap
======================

- Module extension e.g., excel_import_export_async, that add ability to
execute as async process.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20excel_import_export%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Ecosoft

Contributors
------------

- Kitti Upariphutthiphong. <[email protected]> (http://ecosoft.co.th)
- Saran Lim. <[email protected]> (http://ecosoft.co.th)

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.

.. |maintainer-kittiu| image:: https://github.com/kittiu.png?size=40px
:target: https://github.com/kittiu
:alt: kittiu

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-kittiu|

This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/17.0/excel_import_export>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
6 changes: 6 additions & 0 deletions excel_import_export/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)

from . import wizard
from . import models
from . import controllers
30 changes: 30 additions & 0 deletions excel_import_export/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)

{
"name": "Excel Import/Export/Report",
"summary": "Base module for developing Excel import/export/report",
"version": "17.0.1.0.0",
"author": "Ecosoft,Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/server-tools",
"category": "Tools",
"depends": ["mail"],
"external_dependencies": {"python": ["openpyxl"]},
"data": [
"security/ir.model.access.csv",
"wizard/export_xlsx_wizard.xml",
"wizard/import_xlsx_wizard.xml",
"wizard/report_xlsx_wizard.xml",
"views/xlsx_template_view.xml",
"views/xlsx_report.xml",
],
"installable": True,
"development_status": "Beta",
"maintainers": ["kittiu"],
"assets": {
"web.assets_backend": [
"/excel_import_export/static/src/js/report/action_manager_report.esm.js"
]
},
}
4 changes: 4 additions & 0 deletions excel_import_export/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)

from . import report
95 changes: 95 additions & 0 deletions excel_import_export/controllers/report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)

import base64
import json
import logging

from werkzeug.urls import url_decode

from odoo import http
from odoo.http import content_disposition, request, route, serialize_exception
from odoo.tools import html_escape
from odoo.tools.safe_eval import safe_eval, time

from odoo.addons.web.controllers import report

_logger = logging.getLogger(__name__)


class ReportController(report.ReportController):
@route()
def report_routes(self, reportname, docids=None, converter=None, **data):
if converter == "excel":
report = request.env["ir.actions.report"]._get_report_from_name(reportname)
context = dict(request.env.context)

Check warning on line 25 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L24-L25

Added lines #L24 - L25 were not covered by tests
if docids:
docids = [int(i) for i in docids.split(",")]
if data.get("options"):
data.update(json.loads(data.pop("options")))

Check warning on line 29 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L29

Added line #L29 was not covered by tests
if data.get("context"):
# Ignore 'lang' here, because the context in data is the one
# from the webclient *but* if the user explicitely wants to
# change the lang, this mechanism overwrites it.
data["context"] = json.loads(data["context"])

Check warning on line 34 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L34

Added line #L34 was not covered by tests
if data["context"].get("lang"):
del data["context"]["lang"]
context.update(data["context"])

Check warning on line 37 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L36-L37

Added lines #L36 - L37 were not covered by tests

excel, report_name = report.with_context(**context)._render_excel(

Check warning on line 39 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L39

Added line #L39 was not covered by tests
docids, data=data
)
excel = base64.decodebytes(excel)

Check warning on line 42 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L42

Added line #L42 was not covered by tests
if docids:
records = request.env[report.model].browse(docids)

Check warning on line 44 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L44

Added line #L44 was not covered by tests
if report.print_report_name and not len(records) > 1:
# this is a bad idea, this should only be .xlsx
extension = report_name.split(".")[-1:].pop()
report_name = safe_eval(

Check warning on line 48 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L47-L48

Added lines #L47 - L48 were not covered by tests
report.print_report_name, {"object": records, "time": time}
)
report_name = f"{report_name}.{extension}"
excelhttpheaders = [

Check warning on line 52 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L51-L52

Added lines #L51 - L52 were not covered by tests
(
"Content-Type",
"application/vnd.openxmlformats-"
"officedocument.spreadsheetml.sheet",
),
("Content-Length", len(excel)),
("Content-Disposition", content_disposition(report_name)),
]
return request.make_response(excel, headers=excelhttpheaders)
return super().report_routes(reportname, docids, converter, **data)

Check warning on line 62 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L61-L62

Added lines #L61 - L62 were not covered by tests

@http.route()
def report_download(self, data, context=None):
requestcontent = json.loads(data)
url, report_type = requestcontent[0], requestcontent[1]

Check warning on line 67 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L66-L67

Added lines #L66 - L67 were not covered by tests
if report_type != "excel":
return super().report_download(data, context)
reportname = "???"
try:
pattern = "/report/excel/"
reportname = url.split(pattern)[1].split("?")[0]
docids = None

Check warning on line 74 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L69-L74

Added lines #L69 - L74 were not covered by tests
if "/" in reportname:
reportname, docids = reportname.split("/")

Check warning on line 76 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L76

Added line #L76 was not covered by tests
if docids:
return self.report_routes(

Check warning on line 78 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L78

Added line #L78 was not covered by tests
reportname, docids=docids, converter="excel", context=context
)
data = dict(url_decode(url.split("?")[1]).items())

Check warning on line 81 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L81

Added line #L81 was not covered by tests
if "context" in data:
context, data_context = (

Check warning on line 83 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L83

Added line #L83 was not covered by tests
json.loads(context or "{}"),
json.loads(data.pop("context")),
)
context = json.dumps({**context, **data_context})
return self.report_routes(

Check warning on line 88 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L87-L88

Added lines #L87 - L88 were not covered by tests
reportname, converter="excel", context=context, **data
)
except Exception as e:
_logger.exception("Error while generating report %s", reportname)
se = serialize_exception(e)
error = {"code": 200, "message": "Odoo Server Error", "data": se}
return request.make_response(html_escape(json.dumps(error)))

Check warning on line 95 in excel_import_export/controllers/report.py

View check run for this annotation

Codecov / codecov/patch

excel_import_export/controllers/report.py#L91-L95

Added lines #L91 - L95 were not covered by tests
Loading
Loading