[MIG] report_xlsx: Migration to 17.0
parent
2381d65fb1
commit
8e9d9a74d1
Binary file not shown.
|
@ -115,15 +115,16 @@ Contributors
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- Adrien Peiffer <adrien.peiffer@acsone.eu>
|
- Adrien Peiffer <adrien.peiffer@acsone.eu>
|
||||||
- S??bastien Alix <sebastien.alix@osiell.com>
|
- Sébastien Alix <sebastien.alix@osiell.com>
|
||||||
- St??phane Bidoul <stephane.bidoul@acsone.eu>
|
- Stéphane Bidoul <stephane.bidoul@acsone.eu>
|
||||||
- Enric Tobella <etobella@creublanca.es>
|
- Enric Tobella <etobella@creublanca.es>
|
||||||
- Graeme Gellatly <gdgellatly@gmail.com>
|
- Graeme Gellatly <gdgellatly@gmail.com>
|
||||||
- Cristian Salamea <cs@prisehub.com>
|
- Cristian Salamea <cs@prisehub.com>
|
||||||
- Rod Schouteden <rod.schouteden@dynapps.be>
|
- Rod Schouteden <rod.schouteden@dynapps.be>
|
||||||
- Eugene Molotov <molotov@it-projects.info>
|
- Eugene Molotov <molotov@it-projects.info>
|
||||||
- Christopher Ormaza <chris.ormaza@forgeflow.com>
|
- Christopher Ormaza <chris.ormaza@forgeflow.com>
|
||||||
- Houz??fa Abbasbhay <houzefa.abba@xcg-consulting.fr>
|
- Houzéfa Abbasbhay <houzefa.abba@xcg-consulting.fr>
|
||||||
|
- Le Dinh Tien <tien-ld@komit-consulting.com>
|
||||||
|
|
||||||
Maintainers
|
Maintainers
|
||||||
-----------
|
-----------
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"author": "ACSONE SA/NV," "Creu Blanca," "Odoo Community Association (OCA)",
|
"author": "ACSONE SA/NV," "Creu Blanca," "Odoo Community Association (OCA)",
|
||||||
"website": "https://github.com/OCA/reporting-engine",
|
"website": "https://github.com/OCA/reporting-engine",
|
||||||
"category": "Reporting",
|
"category": "Reporting",
|
||||||
"version": "16.0.2.0.0",
|
"version": "17.0.2.0.0",
|
||||||
"development_status": "Mature",
|
"development_status": "Mature",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"external_dependencies": {"python": ["xlsxwriter", "xlrd"]},
|
"external_dependencies": {"python": ["xlsxwriter", "xlrd"]},
|
||||||
|
|
|
@ -83,7 +83,7 @@ class ReportController(ReportController):
|
||||||
report = request.env["ir.actions.report"]._get_report_from_name(
|
report = request.env["ir.actions.report"]._get_report_from_name(
|
||||||
reportname
|
reportname
|
||||||
)
|
)
|
||||||
filename = "%s.%s" % (report.name, "xlsx")
|
filename = f"{report.name}.xlsx"
|
||||||
|
|
||||||
if docids:
|
if docids:
|
||||||
ids = [int(x) for x in docids.split(",")]
|
ids = [int(x) for x in docids.split(",")]
|
||||||
|
@ -92,7 +92,7 @@ class ReportController(ReportController):
|
||||||
report_name = safe_eval(
|
report_name = safe_eval(
|
||||||
report.print_report_name, {"object": obj, "time": time}
|
report.print_report_name, {"object": obj, "time": time}
|
||||||
)
|
)
|
||||||
filename = "%s.%s" % (report_name, "xlsx")
|
filename = f"{report_name}.xlsx"
|
||||||
if not response.headers.get("Content-Disposition"):
|
if not response.headers.get("Content-Disposition"):
|
||||||
response.headers.add(
|
response.headers.add(
|
||||||
"Content-Disposition", content_disposition(filename)
|
"Content-Disposition", content_disposition(filename)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<odoo>
|
<odoo>
|
||||||
<!--
|
<!--
|
||||||
?? 2017 Creu Blanca
|
© 2017 Creu Blanca
|
||||||
License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html).
|
License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html).
|
||||||
-->
|
-->
|
||||||
<record id="partner_xlsx" model="ir.actions.report">
|
<record id="partner_xlsx" model="ir.actions.report">
|
||||||
|
|
|
@ -34,7 +34,7 @@ msgstr "Imprimeix a XLSX"
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
||||||
msgid "Report Action"
|
msgid "Report Action"
|
||||||
msgstr "Informe d'acci??"
|
msgstr "Informe d'acció"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
||||||
|
@ -49,10 +49,10 @@ msgid ""
|
||||||
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
||||||
"downloaded by the user."
|
"downloaded by the user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El tipus d'informe que es render??, cadascun amb el seu propi m??tode de "
|
"El tipus d'informe que es renderà, cadascun amb el seu propi mètode de "
|
||||||
"representaci??. HTML significa que l'informe s'obrir?? directament al vostre "
|
"representació. HTML significa que l'informe s'obrirà directament al vostre "
|
||||||
"navegador, PDF significa que l'informe es representar?? amb Wkhtmltopdf i "
|
"navegador, PDF significa que l'informe es representarà amb Wkhtmltopdf i "
|
||||||
"l'usuari el baixar??."
|
"l'usuari el baixarà."
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
||||||
|
|
|
@ -73,7 +73,7 @@ msgstr "XLSX"
|
||||||
#~ "browser settings to allow popup windows for this page."
|
#~ "browser settings to allow popup windows for this page."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Ein Popup-Fenster wurde abgewiesen. Sie werden vermutlich Ihre Browser-"
|
#~ "Ein Popup-Fenster wurde abgewiesen. Sie werden vermutlich Ihre Browser-"
|
||||||
#~ "Einstellungen ??ndern m??ssen, damit die Anzeige dieser Seite m??glich wird."
|
#~ "Einstellungen ändern müssen, damit die Anzeige dieser Seite möglich wird."
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
#~ msgstr "Name anzeigen"
|
#~ msgstr "Name anzeigen"
|
||||||
|
@ -82,7 +82,7 @@ msgstr "XLSX"
|
||||||
#~ msgstr "ID"
|
#~ msgstr "ID"
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
#~ msgid "Last Modified on"
|
||||||
#~ msgstr "Zuletzt ge??ndert am"
|
#~ msgstr "Zuletzt geändert am"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "Warning"
|
#~ msgid "Warning"
|
||||||
|
|
|
@ -37,7 +37,7 @@ msgstr "Imprimir en XLSX"
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
||||||
msgid "Report Action"
|
msgid "Report Action"
|
||||||
msgstr "Informar Acci??n"
|
msgstr "Informar Acción"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
||||||
|
@ -52,10 +52,10 @@ msgid ""
|
||||||
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
||||||
"downloaded by the user."
|
"downloaded by the user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El tipo de informe que se representar??, cada uno con su propio m??todo de "
|
"El tipo de informe que se representará, cada uno con su propio método de "
|
||||||
"representaci??n. HTML significa que el informe se abrir?? directamente en el "
|
"representación. HTML significa que el informe se abrirá directamente en el "
|
||||||
"PDF de su navegador significa que el informe se representar?? usando "
|
"PDF de su navegador significa que el informe se representará usando "
|
||||||
"Wkhtmltopdf y el usuario lo descargar??."
|
"Wkhtmltopdf y el usuario lo descargará."
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
||||||
|
@ -73,7 +73,7 @@ msgstr "XLSX"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Una ventana emergente con su informe fue bloqueada. Puede que necesite "
|
#~ "Una ventana emergente con su informe fue bloqueada. Puede que necesite "
|
||||||
#~ "cambiar las preferencias de su navegador para que permita ventanas "
|
#~ "cambiar las preferencias de su navegador para que permita ventanas "
|
||||||
#~ "emergentes en esta p??gina."
|
#~ "emergentes en esta página."
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
#~ msgstr "Nombre mostrado"
|
#~ msgstr "Nombre mostrado"
|
||||||
|
@ -82,7 +82,7 @@ msgstr "XLSX"
|
||||||
#~ msgstr "ID"
|
#~ msgstr "ID"
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
#~ msgid "Last Modified on"
|
||||||
#~ msgstr "??ltima modificaci??n el"
|
#~ msgstr "Última modificación el"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "Warning"
|
#~ msgid "Warning"
|
||||||
|
|
|
@ -59,7 +59,7 @@ msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "%s model was not found"
|
#~ msgid "%s model was not found"
|
||||||
#~ msgstr "model '%s' n'a pas ??t?? trouv??"
|
#~ msgstr "model '%s' n'a pas été trouvé"
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
#~ msgstr "Nom"
|
#~ msgstr "Nom"
|
||||||
|
@ -68,7 +68,7 @@ msgstr ""
|
||||||
#~ msgstr "ID"
|
#~ msgstr "ID"
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
#~ msgid "Last Modified on"
|
||||||
#~ msgstr "Derni??re modification le"
|
#~ msgstr "Dernière modification le"
|
||||||
|
|
||||||
#~ msgid "report.report_xlsx.partner_xlsx"
|
#~ msgid "report.report_xlsx.partner_xlsx"
|
||||||
#~ msgstr "report.report_xlsx.partner_xlsx"
|
#~ msgstr "report.report_xlsx.partner_xlsx"
|
||||||
|
|
|
@ -61,15 +61,15 @@ msgstr ""
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "%s model was not found"
|
#~ msgid "%s model was not found"
|
||||||
#~ msgstr "%s model nije prona??en"
|
#~ msgstr "%s model nije pronađen"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "A popup window with your report was blocked. You may need to change your "
|
#~ "A popup window with your report was blocked. You may need to change your "
|
||||||
#~ "browser settings to allow popup windows for this page."
|
#~ "browser settings to allow popup windows for this page."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Sko??ni prozor sa va??im izvje??tajem je blokiran. Mo??da trebate promijeniti "
|
#~ "Skočni prozor sa vašim izvještajem je blokiran. Možda trebate promijeniti "
|
||||||
#~ "postavke pretra??iva??a da dozvolite sko??ne prozore za ovu stranicu."
|
#~ "postavke pretraživača da dozvolite skočne prozore za ovu stranicu."
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
#~ msgstr "Naziv za prikaz"
|
#~ msgstr "Naziv za prikaz"
|
||||||
|
|
|
@ -19,12 +19,12 @@ msgstr ""
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_report_report_xlsx_abstract
|
#: model:ir.model,name:report_xlsx.model_report_report_xlsx_abstract
|
||||||
msgid "Abstract XLSX Report"
|
msgid "Abstract XLSX Report"
|
||||||
msgstr "Relat??rio XLSX Abstrato"
|
msgstr "Relatório XLSX Abstrato"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_report_report_xlsx_partner_xlsx
|
#: model:ir.model,name:report_xlsx.model_report_report_xlsx_partner_xlsx
|
||||||
msgid "Partner XLSX Report"
|
msgid "Partner XLSX Report"
|
||||||
msgstr "Relat??rio de Parceiro XLSX"
|
msgstr "Relatório de Parceiro XLSX"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.actions.report,name:report_xlsx.partner_xlsx
|
#: model:ir.actions.report,name:report_xlsx.partner_xlsx
|
||||||
|
@ -34,12 +34,12 @@ msgstr "Imprimir para XLSX"
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
||||||
msgid "Report Action"
|
msgid "Report Action"
|
||||||
msgstr "A????o do Relat??rio"
|
msgstr "Ação do Relatório"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
||||||
msgid "Report Type"
|
msgid "Report Type"
|
||||||
msgstr "Tipo de Relat??rio"
|
msgstr "Tipo de Relatório"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields,help:report_xlsx.field_ir_actions_report__report_type
|
#: model:ir.model.fields,help:report_xlsx.field_ir_actions_report__report_type
|
||||||
|
@ -49,9 +49,9 @@ msgid ""
|
||||||
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
"browser PDF means the report will be rendered using Wkhtmltopdf and "
|
||||||
"downloaded by the user."
|
"downloaded by the user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"O tipo de relat??rio que ser?? produzido, tendo cada qual o seu m??todo de "
|
"O tipo de relatório que será produzido, tendo cada qual o seu método de "
|
||||||
"produ????o. HTML significa que o relat??rio ser?? aberto diretamente no seu "
|
"produção. HTML significa que o relatório será aberto diretamente no seu "
|
||||||
"browser. PDF indica que o relat??rio ser?? produzido com o Wkhtmltopdf e "
|
"browser. PDF indica que o relatório será produzido com o Wkhtmltopdf e "
|
||||||
"descarregado pelo utilizador."
|
"descarregado pelo utilizador."
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
|
@ -61,16 +61,16 @@ msgstr "XLSX"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "%s model was not found"
|
#~ msgid "%s model was not found"
|
||||||
#~ msgstr "O modelo %s n??o foi encontrado"
|
#~ msgstr "O modelo %s não foi encontrado"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "A popup window with your report was blocked. You may need to change your "
|
#~ "A popup window with your report was blocked. You may need to change your "
|
||||||
#~ "browser settings to allow popup windows for this page."
|
#~ "browser settings to allow popup windows for this page."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Uma janela popup com o seu relat??rio foi bloqueada. Pode necessitar de "
|
#~ "Uma janela popup com o seu relatório foi bloqueada. Pode necessitar de "
|
||||||
#~ "mudar as configura????es do browser para permitir janelas popup nesta "
|
#~ "mudar as configurações do browser para permitir janelas popup nesta "
|
||||||
#~ "p??gina."
|
#~ "página."
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
#~ msgstr "Nome a Exibir"
|
#~ msgstr "Nome a Exibir"
|
||||||
|
@ -79,7 +79,7 @@ msgstr "XLSX"
|
||||||
#~ msgstr "ID"
|
#~ msgstr "ID"
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
#~ msgid "Last Modified on"
|
||||||
#~ msgstr "??ltima Modifica????o em"
|
#~ msgstr "Última Modificação em"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "Warning"
|
#~ msgid "Warning"
|
||||||
|
|
|
@ -34,7 +34,7 @@ msgstr "Skriv ut till XLSX"
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
#: model:ir.model,name:report_xlsx.model_ir_actions_report
|
||||||
msgid "Report Action"
|
msgid "Report Action"
|
||||||
msgstr "Rapport??tg??rd"
|
msgstr "Rapportåtgärd"
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
#: model:ir.model.fields,field_description:report_xlsx.field_ir_actions_report__report_type
|
||||||
|
@ -50,8 +50,8 @@ msgid ""
|
||||||
"downloaded by the user."
|
"downloaded by the user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Den typ av rapport som ska renderas, var och en har sin egen "
|
"Den typ av rapport som ska renderas, var och en har sin egen "
|
||||||
"renderingsmetod. HTML inneb??r att rapporten ??ppnas direkt i webbl??saren, PDF "
|
"renderingsmetod. HTML innebär att rapporten öppnas direkt i webbläsaren, PDF "
|
||||||
"betyder att rapporten renderas med Wkhtmltopdf och laddas ner av anv??ndaren."
|
"betyder att rapporten renderas med Wkhtmltopdf och laddas ner av användaren."
|
||||||
|
|
||||||
#. module: report_xlsx
|
#. module: report_xlsx
|
||||||
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
#: model:ir.model.fields.selection,name:report_xlsx.selection__ir_actions_report__report_type__xlsx
|
||||||
|
@ -67,8 +67,8 @@ msgstr "XLSX"
|
||||||
#~ "A popup window with your report was blocked. You may need to change your "
|
#~ "A popup window with your report was blocked. You may need to change your "
|
||||||
#~ "browser settings to allow popup windows for this page."
|
#~ "browser settings to allow popup windows for this page."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Ett popup-f??nster med din rapport blockerades. Du kan beh??va ??ndra "
|
#~ "Ett popup-fönster med din rapport blockerades. Du kan behöva ändra "
|
||||||
#~ "inst??llningarna i din webbl??sare f??r att till??ta popup-f??nster p?? den h??r "
|
#~ "inställningarna i din webbläsare för att tillåta popup-fönster på den här "
|
||||||
#~ "sidan."
|
#~ "sidan."
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
#~ msgid "Display Name"
|
||||||
|
@ -78,7 +78,7 @@ msgstr "XLSX"
|
||||||
#~ msgstr "ID"
|
#~ msgstr "ID"
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
#~ msgid "Last Modified on"
|
||||||
#~ msgstr "Senast ??ndrad den"
|
#~ msgstr "Senast ändrad den"
|
||||||
|
|
||||||
#, python-format
|
#, python-format
|
||||||
#~ msgid "Warning"
|
#~ msgid "Warning"
|
||||||
|
|
|
@ -26,7 +26,7 @@ class ReportAction(models.Model):
|
||||||
.sudo(False)
|
.sudo(False)
|
||||||
.create_xlsx_report(docids, data) # noqa
|
.create_xlsx_report(docids, data) # noqa
|
||||||
)
|
)
|
||||||
if ret and isinstance(ret, (tuple, list)): # data, "xlsx"
|
if ret and isinstance(ret, (tuple | list)): # data, "xlsx"
|
||||||
report_sudo.save_xlsx_report_attachment(docids, ret[0])
|
report_sudo.save_xlsx_report_attachment(docids, ret[0])
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
- Adrien Peiffer \<<adrien.peiffer@acsone.eu>\>
|
- Adrien Peiffer \<<adrien.peiffer@acsone.eu>\>
|
||||||
- S??bastien Alix \<<sebastien.alix@osiell.com>\>
|
- Sébastien Alix \<<sebastien.alix@osiell.com>\>
|
||||||
- St??phane Bidoul \<<stephane.bidoul@acsone.eu>\>
|
- Stéphane Bidoul \<<stephane.bidoul@acsone.eu>\>
|
||||||
- Enric Tobella \<<etobella@creublanca.es>\>
|
- Enric Tobella \<<etobella@creublanca.es>\>
|
||||||
- Graeme Gellatly \<<gdgellatly@gmail.com>\>
|
- Graeme Gellatly \<<gdgellatly@gmail.com>\>
|
||||||
- Cristian Salamea \<<cs@prisehub.com>\>
|
- Cristian Salamea \<<cs@prisehub.com>\>
|
||||||
- Rod Schouteden \<<rod.schouteden@dynapps.be>\>
|
- Rod Schouteden \<<rod.schouteden@dynapps.be>\>
|
||||||
- Eugene Molotov \<<molotov@it-projects.info>\>
|
- Eugene Molotov \<<molotov@it-projects.info>\>
|
||||||
- Christopher Ormaza \<<chris.ormaza@forgeflow.com>\>
|
- Christopher Ormaza \<<chris.ormaza@forgeflow.com>\>
|
||||||
- Houz??fa Abbasbhay \<<houzefa.abba@xcg-consulting.fr>\>
|
- Houzéfa Abbasbhay \<<houzefa.abba@xcg-consulting.fr>\>
|
||||||
|
- Le Dinh Tien \<<tien-ld@komit-consulting.com>\>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
This module provides a basic report class to generate xlsx report.
|
This module provides a basic report class to generate xlsx report.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Make sure you have `xlsxwriter` Python module installed:
|
Make sure you have `xlsxwriter` Python module installed:
|
||||||
|
|
||||||
$ pip3 install xlsxwriter
|
$ pip3 install xlsxwriter
|
||||||
|
|
||||||
For testing it is also necessary `xlrd` Python module installed:
|
For testing it is also necessary `xlrd` Python module installed:
|
||||||
|
|
||||||
$ pip3 install xlrd
|
$ pip3 install xlrd
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
An example of XLSX report for partners on a module called
|
An example of XLSX report for partners on a module called
|
||||||
\`module_name\`:
|
\`module_name\`:
|
||||||
|
|
||||||
A python class :
|
A python class :
|
||||||
|
|
||||||
from odoo import models
|
from odoo import models
|
||||||
|
|
||||||
class PartnerXlsx(models.AbstractModel):
|
class PartnerXlsx(models.AbstractModel):
|
||||||
_name = 'report.module_name.report_name'
|
_name = 'report.module_name.report_name'
|
||||||
_inherit = 'report.report_xlsx.abstract'
|
_inherit = 'report.report_xlsx.abstract'
|
||||||
|
|
||||||
def generate_xlsx_report(self, workbook, data, partners):
|
def generate_xlsx_report(self, workbook, data, partners):
|
||||||
for obj in partners:
|
for obj in partners:
|
||||||
report_name = obj.name
|
report_name = obj.name
|
||||||
# One sheet by partner
|
# One sheet by partner
|
||||||
sheet = workbook.add_worksheet(report_name[:31])
|
sheet = workbook.add_worksheet(report_name[:31])
|
||||||
bold = workbook.add_format({'bold': True})
|
bold = workbook.add_format({'bold': True})
|
||||||
sheet.write(0, 0, obj.name, bold)
|
sheet.write(0, 0, obj.name, bold)
|
||||||
|
|
||||||
To manipulate the `workbook` and `sheet` objects, refer to the
|
To manipulate the `workbook` and `sheet` objects, refer to the
|
||||||
[documentation](http://xlsxwriter.readthedocs.org/) of `xlsxwriter`.
|
[documentation](http://xlsxwriter.readthedocs.org/) of `xlsxwriter`.
|
||||||
|
|
||||||
A report XML record :
|
A report XML record :
|
||||||
|
|
||||||
<report
|
<report
|
||||||
id="partner_xlsx"
|
id="partner_xlsx"
|
||||||
model="res.partner"
|
model="res.partner"
|
||||||
string="Print to XLSX"
|
string="Print to XLSX"
|
||||||
report_type="xlsx"
|
report_type="xlsx"
|
||||||
name="module_name.report_name"
|
name="module_name.report_name"
|
||||||
file="res_partner"
|
file="res_partner"
|
||||||
attachment_use="False"
|
attachment_use="False"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -453,15 +453,16 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
|
||||||
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
|
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>Adrien Peiffer <<a class="reference external" href="mailto:adrien.peiffer@acsone.eu">adrien.peiffer@acsone.eu</a>></li>
|
<li>Adrien Peiffer <<a class="reference external" href="mailto:adrien.peiffer@acsone.eu">adrien.peiffer@acsone.eu</a>></li>
|
||||||
<li>S??bastien Alix <<a class="reference external" href="mailto:sebastien.alix@osiell.com">sebastien.alix@osiell.com</a>></li>
|
<li>Sébastien Alix <<a class="reference external" href="mailto:sebastien.alix@osiell.com">sebastien.alix@osiell.com</a>></li>
|
||||||
<li>St??phane Bidoul <<a class="reference external" href="mailto:stephane.bidoul@acsone.eu">stephane.bidoul@acsone.eu</a>></li>
|
<li>Stéphane Bidoul <<a class="reference external" href="mailto:stephane.bidoul@acsone.eu">stephane.bidoul@acsone.eu</a>></li>
|
||||||
<li>Enric Tobella <<a class="reference external" href="mailto:etobella@creublanca.es">etobella@creublanca.es</a>></li>
|
<li>Enric Tobella <<a class="reference external" href="mailto:etobella@creublanca.es">etobella@creublanca.es</a>></li>
|
||||||
<li>Graeme Gellatly <<a class="reference external" href="mailto:gdgellatly@gmail.com">gdgellatly@gmail.com</a>></li>
|
<li>Graeme Gellatly <<a class="reference external" href="mailto:gdgellatly@gmail.com">gdgellatly@gmail.com</a>></li>
|
||||||
<li>Cristian Salamea <<a class="reference external" href="mailto:cs@prisehub.com">cs@prisehub.com</a>></li>
|
<li>Cristian Salamea <<a class="reference external" href="mailto:cs@prisehub.com">cs@prisehub.com</a>></li>
|
||||||
<li>Rod Schouteden <<a class="reference external" href="mailto:rod.schouteden@dynapps.be">rod.schouteden@dynapps.be</a>></li>
|
<li>Rod Schouteden <<a class="reference external" href="mailto:rod.schouteden@dynapps.be">rod.schouteden@dynapps.be</a>></li>
|
||||||
<li>Eugene Molotov <<a class="reference external" href="mailto:molotov@it-projects.info">molotov@it-projects.info</a>></li>
|
<li>Eugene Molotov <<a class="reference external" href="mailto:molotov@it-projects.info">molotov@it-projects.info</a>></li>
|
||||||
<li>Christopher Ormaza <<a class="reference external" href="mailto:chris.ormaza@forgeflow.com">chris.ormaza@forgeflow.com</a>></li>
|
<li>Christopher Ormaza <<a class="reference external" href="mailto:chris.ormaza@forgeflow.com">chris.ormaza@forgeflow.com</a>></li>
|
||||||
<li>Houz??fa Abbasbhay <<a class="reference external" href="mailto:houzefa.abba@xcg-consulting.fr">houzefa.abba@xcg-consulting.fr</a>></li>
|
<li>Houzéfa Abbasbhay <<a class="reference external" href="mailto:houzefa.abba@xcg-consulting.fr">houzefa.abba@xcg-consulting.fr</a>></li>
|
||||||
|
<li>Le Dinh Tien <<a class="reference external" href="mailto:tien-ld@komit-consulting.com">tien-ld@komit-consulting.com</a>></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="maintainers">
|
<div class="section" id="maintainers">
|
||||||
|
|
|
@ -71,5 +71,5 @@ class TestReport(common.TransactionCase):
|
||||||
)
|
)
|
||||||
eur = self.env.ref("base.EUR")
|
eur = self.env.ref("base.EUR")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.xlsx_report._report_xlsx_currency_format(eur), "#,##0.00 ???"
|
self.xlsx_report._report_xlsx_currency_format(eur), "#,##0.00 €"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# generated from manifests external_dependencies
|
# generated from manifests external_dependencies
|
||||||
xlrd
|
xlrd
|
||||||
xlsxwriter
|
xlsxwriter
|
||||||
|
|
Loading…
Reference in New Issue