From 77990cbaf34d3e0ac14a64e80d14d9c106b1f1d9 Mon Sep 17 00:00:00 2001
From: LauraCForgeFlow
Date: Tue, 27 Aug 2024 10:22:02 +0200
Subject: [PATCH 1/8] [ADD] report_qweb_pdf_cover
---
report_qweb_pdf_cover/README.rst | 102 ++++
report_qweb_pdf_cover/__init__.py | 4 +
report_qweb_pdf_cover/__manifest__.py | 16 +
report_qweb_pdf_cover/i18n/es.po | 157 +++++++
.../i18n/report_qweb_pdf_cover.pot | 147 ++++++
report_qweb_pdf_cover/models/__init__.py | 4 +
.../models/ir_actions_report.py | 216 +++++++++
report_qweb_pdf_cover/readme/CONTRIBUTORS.rst | 1 +
report_qweb_pdf_cover/readme/DESCRIPTION.rst | 5 +
report_qweb_pdf_cover/readme/USAGE.rst | 18 +
.../static/description/index.html | 443 ++++++++++++++++++
.../views/ir_actions_views.xml | 38 ++
12 files changed, 1151 insertions(+)
create mode 100644 report_qweb_pdf_cover/README.rst
create mode 100644 report_qweb_pdf_cover/__init__.py
create mode 100644 report_qweb_pdf_cover/__manifest__.py
create mode 100644 report_qweb_pdf_cover/i18n/es.po
create mode 100644 report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
create mode 100644 report_qweb_pdf_cover/models/__init__.py
create mode 100644 report_qweb_pdf_cover/models/ir_actions_report.py
create mode 100644 report_qweb_pdf_cover/readme/CONTRIBUTORS.rst
create mode 100644 report_qweb_pdf_cover/readme/DESCRIPTION.rst
create mode 100644 report_qweb_pdf_cover/readme/USAGE.rst
create mode 100644 report_qweb_pdf_cover/static/description/index.html
create mode 100644 report_qweb_pdf_cover/views/ir_actions_views.xml
diff --git a/report_qweb_pdf_cover/README.rst b/report_qweb_pdf_cover/README.rst
new file mode 100644
index 0000000000..989b5165cc
--- /dev/null
+++ b/report_qweb_pdf_cover/README.rst
@@ -0,0 +1,102 @@
+=====================
+Report QWeb PDF Cover
+=====================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:1287ee62d703ed048f33bb706f289cf01e5c99bead22b8b612d69e88071a4d67
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |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%2Freporting--engine-lightgray.png?logo=github
+ :target: https://github.com/OCA/reporting-engine/tree/16.0/report_qweb_pdf_cover
+ :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-16-0/reporting-engine-16-0-report_qweb_pdf_cover
+ :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/reporting-engine&target_branch=16.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module allows for front and back covers to be added to the generated PDF
+reports. They can be added as a separate page, at the beginning or the end of
+the report, but they can also overlap the first and last page of the actual
+report, respectively.
+
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+To add a cover to a report, you need to access to the report's configuration,
+more specifically to the `Advanced Properties` tab. There, you will find two
+checkboxes, one for the front cover and another for the back cover.
+They both work the same, so let's focus on the front cover with an example.
+
+* You must check the `Use Front Cover` checkbox to enable the front cover. You
+ will see that a new checkbox and a PDF file widget appear.
+
+* If you want the front cover to overlap with the first page of the PDF report,
+ you should also check the `Overlap Front Cover` checkbox. Leave it unchecked
+ if you don't want the front cover to overlap with the first page.
+
+* The last step would be to upload the PDF file that will be used as the front
+ cover. You can do this by clicking on the PDF file widget and selecting the
+ file.
+
+* Important! The file must be a PDF file, and it should have only one page. If
+ it has more pages, only the first one will be used.
+
+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 to smash it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* ForgeFlow
+
+Contributors
+~~~~~~~~~~~~
+
+* Laura Cazorla
+
+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.
+
+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/report_qweb_pdf_cover/__init__.py b/report_qweb_pdf_cover/__init__.py
new file mode 100644
index 0000000000..753b6a7928
--- /dev/null
+++ b/report_qweb_pdf_cover/__init__.py
@@ -0,0 +1,4 @@
+# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com)
+# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
+
+from . import models
diff --git a/report_qweb_pdf_cover/__manifest__.py b/report_qweb_pdf_cover/__manifest__.py
new file mode 100644
index 0000000000..b0234148f8
--- /dev/null
+++ b/report_qweb_pdf_cover/__manifest__.py
@@ -0,0 +1,16 @@
+# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com)
+# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
+
+{
+ "name": "Report QWeb PDF Cover",
+ "summary": "Add front and back covers to your QWeb PDF reports",
+ "author": "ForgeFlow, Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/reporting-engine",
+ "category": "Reporting",
+ "version": "16.0.1.0.0",
+ "license": "AGPL-3",
+ "depends": ["web"],
+ "data": ["views/ir_actions_views.xml"],
+ "installable": True,
+ "application": False,
+}
diff --git a/report_qweb_pdf_cover/i18n/es.po b/report_qweb_pdf_cover/i18n/es.po
new file mode 100644
index 0000000000..03b8c28b84
--- /dev/null
+++ b/report_qweb_pdf_cover/i18n/es.po
@@ -0,0 +1,157 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * report_qweb_pdf_cover
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0+e\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-08-27 08:09+0000\n"
+"PO-Revision-Date: 2024-08-27 08:09+0000\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: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Back Cover PDF"
+msgstr "Contraportada PDF"
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load back cover: %s"
+msgstr "Error al cargar la contraportada: %s"
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load front cover: %s"
+msgstr "Error al cargar la portada: %s"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Front Cover PDF"
+msgstr "Portada PDF"
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable back cover found."
+msgstr "No se encontró ninguna contraportada usable."
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable front cover found."
+msgstr "No se encontró ninguna portada usable."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid "Overlap Back Cover"
+msgstr "Superponer Contraportada"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid "Overlap Front Cover"
+msgstr "Superponer Portada"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model,name:report_qweb_pdf_cover.model_ir_actions_report
+msgid "Report Action"
+msgstr "Acción de Informe"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Upload an PDF file to use as a back cover on this report."
+msgstr "Suba un archivo PDF para usar como contraportada en este informe."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Upload an PDF file to use as a front cover on this report."
+msgstr "Suba un archivo PDF para usar como portada en este informe."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use Back Cover"
+msgstr "Usar Contraportada"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use Front Cover"
+msgstr "Usar Portada"
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use a back cover when rendering the PDF report."
+msgstr "Usar una contraportada al renderizar el informe PDF."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use a front cover when rendering the PDF report."
+msgstr "Usar una portada al renderizar el informe PDF."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid ""
+"When set, the back cover of the report will overlap with the contents of the"
+" last page of the report. This is useful to include some information of the"
+" report in the back cover."
+msgstr ""
+"Cuando se establece, la contraportada del informe se superpondrá con el "
+"contenido de la última página del informe. Esto es útil para incluir alguna "
+"información del informe en la contraportada."
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid ""
+"When set, the front cover of the report will overlap with the contents of "
+"the first page of the report. This is useful to include some information of "
+"the report in the front cover."
+msgstr ""
+"Cuando se establece, la portada del informe se superpondrá con el contenido "
+"de la primera página del informe. Esto es útil para incluir alguna "
+"información del informe en la portada."
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your back cover PDF contains more than one page, all but the first one will "
+"be ignored."
+msgstr ""
+"Su contraportada PDF contiene más de una página, todas menos la primera se "
+"ignorarán."
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your back cover PDF does not contain any pages."
+msgstr "Su contraportada PDF no contiene ninguna página."
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your front cover PDF contains more than one page, all but the first one will"
+" be ignored."
+msgstr ""
+"Su portada PDF contiene más de una página, todas menos la primera se "
+"ignorarán."
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your front cover PDF does not contain any pages."
+msgstr "Su portada PDF no contiene ninguna página"
diff --git a/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot b/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
new file mode 100644
index 0000000000..109284fdf3
--- /dev/null
+++ b/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
@@ -0,0 +1,147 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * report_qweb_pdf_cover
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0+e\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-08-27 08:08+0000\n"
+"PO-Revision-Date: 2024-08-27 08:08+0000\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: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Back Cover PDF"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load back cover: %s"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load front cover: %s"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Front Cover PDF"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable back cover found."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable front cover found."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid "Overlap Back Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid "Overlap Front Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model,name:report_qweb_pdf_cover.model_ir_actions_report
+msgid "Report Action"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Upload an PDF file to use as a back cover on this report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Upload an PDF file to use as a front cover on this report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use Back Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use Front Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use a back cover when rendering the PDF report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use a front cover when rendering the PDF report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid ""
+"When set, the back cover of the report will overlap with the contents of the"
+" last page of the report. This is useful to include some information of the"
+" report in the back cover."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid ""
+"When set, the front cover of the report will overlap with the contents of "
+"the first page of the report. This is useful to include some information of "
+"the report in the front cover."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your back cover PDF contains more than one page, all but the first one will "
+"be ignored."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your back cover PDF does not contain any pages."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your front cover PDF contains more than one page, all but the first one will"
+" be ignored."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your front cover PDF does not contain any pages."
+msgstr ""
diff --git a/report_qweb_pdf_cover/models/__init__.py b/report_qweb_pdf_cover/models/__init__.py
new file mode 100644
index 0000000000..ac9b7989c2
--- /dev/null
+++ b/report_qweb_pdf_cover/models/__init__.py
@@ -0,0 +1,4 @@
+# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com)
+# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
+
+from . import ir_actions_report
diff --git a/report_qweb_pdf_cover/models/ir_actions_report.py b/report_qweb_pdf_cover/models/ir_actions_report.py
new file mode 100644
index 0000000000..d06d502b2b
--- /dev/null
+++ b/report_qweb_pdf_cover/models/ir_actions_report.py
@@ -0,0 +1,216 @@
+# Copyright 2024 ForgeFlow S.L. (https://www.forgeflow.com)
+# Part of ForgeFlow. See LICENSE file for full copyright and licensing details.
+
+from base64 import b64decode
+from io import BytesIO
+from logging import getLogger
+
+from PyPDF2 import PdfFileReader, PdfFileWriter
+
+from odoo import _, api, fields, models
+
+logger = getLogger(__name__)
+
+
+class Report(models.Model):
+ _inherit = "ir.actions.report"
+
+ use_front_cover = fields.Boolean(
+ default=False, help="Use a front cover when rendering the PDF report."
+ )
+ use_back_cover = fields.Boolean(
+ default=False, help="Use a back cover when rendering the PDF report."
+ )
+
+ front_cover_overlap = fields.Boolean(
+ default=False,
+ string="Overlap Front Cover",
+ help="When set, the front cover of the report will overlap with the "
+ "contents of the first page of the report. This is useful to include "
+ "some information of the report in the front cover.",
+ )
+ back_cover_overlap = fields.Boolean(
+ default=False,
+ string="Overlap Back Cover",
+ help="When set, the back cover of the report will overlap with the "
+ "contents of the last page of the report. This is useful to include "
+ "some information of the report in the back cover.",
+ )
+
+ front_cover_pdf = fields.Binary(
+ string="Front Cover PDF",
+ help="Upload an PDF file to use as a front cover on this report.",
+ )
+ back_cover_pdf = fields.Binary(
+ string="Back Cover PDF",
+ help="Upload an PDF file to use as a back cover on this report.",
+ )
+
+ @api.model
+ def pdf_check_pages(self, num_pages, front=True):
+ if num_pages < 1:
+ if front:
+ logger.error(_("Your front cover PDF does not contain any pages."))
+ else:
+ logger.error(_("Your back cover PDF does not contain any pages."))
+ return False
+ elif num_pages > 1:
+ if front:
+ logger.info(
+ _(
+ "Your front cover PDF contains more than one page, "
+ "all but the first one will be ignored."
+ )
+ )
+ else:
+ logger.info(
+ _(
+ "Your back cover PDF contains more than one page, "
+ "all but the first one will be ignored."
+ )
+ )
+ return True
+
+ def load_covers(
+ self, report_sudo, front_cover, back_cover, use_front_cover, use_back_cover
+ ):
+ if use_front_cover:
+ front_cover_pdf = self.front_cover_pdf or report_sudo.front_cover_pdf
+ if front_cover_pdf:
+ front_cover = b64decode(front_cover_pdf)
+ if use_back_cover:
+ back_cover_pdf = self.back_cover_pdf or report_sudo.back_cover_pdf
+ if back_cover_pdf:
+ back_cover = b64decode(back_cover_pdf)
+ return front_cover, back_cover
+
+ @api.model
+ def load_cover_pdfs(self, front_cover, back_cover, use_front_cover, use_back_cover):
+ pdf_front_cover = False
+ pdf_back_cover = False
+ if use_front_cover:
+ try:
+ pdf_front_cover = PdfFileReader(BytesIO(front_cover))
+ if not pdf_front_cover:
+ use_front_cover = False
+ logger.error(_("No usable front cover found."))
+ except Exception as e:
+ use_front_cover = False
+ logger.exception(_("Failed to load front cover: %s", e))
+ if use_back_cover:
+ try:
+ pdf_back_cover = PdfFileReader(BytesIO(back_cover))
+ if not pdf_back_cover:
+ use_back_cover = False
+ logger.error(_("No usable back cover found."))
+ except Exception as e:
+ use_back_cover = False
+ logger.exception(_("Failed to load back cover: %s", e))
+ return use_front_cover, pdf_front_cover, use_back_cover, pdf_back_cover
+
+ @api.model
+ def insert_cover_pages(
+ self,
+ pdf,
+ pages,
+ pdf_front_cover,
+ pdf_back_cover,
+ use_front_cover,
+ use_back_cover,
+ front_cover_overlap,
+ back_cover_overlap,
+ ):
+ for index, page in enumerate(pages):
+ report_page = pdf.addBlankPage(
+ page.mediaBox.getWidth(), page.mediaBox.getHeight()
+ )
+ if index == 0 and use_front_cover:
+ if not front_cover_overlap:
+ front_cover_page = report_page
+ front_cover_page.mergePage(pdf_front_cover.getPage(0))
+ report_page = pdf.addBlankPage(
+ page.mediaBox.getWidth(), page.mediaBox.getHeight()
+ )
+ else:
+ report_page.mergePage(pdf_front_cover.getPage(0))
+ if index == len(pages) - 1 and use_back_cover:
+ if not back_cover_overlap:
+ back_cover_page = pdf.addBlankPage(
+ page.mediaBox.getWidth(), page.mediaBox.getHeight()
+ )
+ back_cover_page.mergePage(pdf_back_cover.getPage(0))
+ else:
+ report_page.mergePage(pdf_back_cover.getPage(0))
+ report_page.mergePage(page)
+
+ @api.model
+ def _run_wkhtmltopdf(
+ self,
+ bodies,
+ report_ref=False,
+ header=None,
+ footer=None,
+ landscape=False,
+ specific_paperformat_args=None,
+ set_viewport_size=False,
+ ):
+ result = super()._run_wkhtmltopdf(
+ bodies,
+ report_ref=report_ref,
+ header=header,
+ footer=footer,
+ landscape=landscape,
+ specific_paperformat_args=specific_paperformat_args,
+ set_viewport_size=set_viewport_size,
+ )
+
+ report_sudo = self._get_report(report_ref)
+ front_cover = False
+ back_cover = False
+ use_front_cover = self.use_front_cover or report_sudo.use_front_cover
+ use_back_cover = self.use_back_cover or report_sudo.use_back_cover
+ front_cover_overlap = (
+ self.front_cover_overlap or report_sudo.front_cover_overlap
+ )
+ back_cover_overlap = self.back_cover_overlap or report_sudo.back_cover_overlap
+ if not use_front_cover and not use_back_cover:
+ return result
+
+ front_cover, back_cover = self.load_covers(
+ report_sudo, front_cover, back_cover, use_front_cover, use_back_cover
+ )
+ if not front_cover and not back_cover:
+ return result
+
+ pdf = PdfFileWriter()
+ (
+ use_front_cover,
+ pdf_front_cover,
+ use_back_cover,
+ pdf_back_cover,
+ ) = self.load_cover_pdfs(
+ front_cover, back_cover, use_front_cover, use_back_cover
+ )
+ if use_front_cover and not self.pdf_check_pages(
+ pdf_front_cover.numPages, front=True
+ ):
+ use_front_cover = False
+ if use_back_cover and not self.pdf_check_pages(
+ pdf_back_cover.numPages, front=False
+ ):
+ use_back_cover = False
+
+ pages = PdfFileReader(BytesIO(result)).pages
+ self.insert_cover_pages(
+ pdf,
+ pages,
+ pdf_front_cover,
+ pdf_back_cover,
+ use_front_cover,
+ use_back_cover,
+ front_cover_overlap,
+ back_cover_overlap,
+ )
+ pdf_content = BytesIO()
+ pdf.write(pdf_content)
+ return pdf_content.getvalue()
diff --git a/report_qweb_pdf_cover/readme/CONTRIBUTORS.rst b/report_qweb_pdf_cover/readme/CONTRIBUTORS.rst
new file mode 100644
index 0000000000..6d1dbddb92
--- /dev/null
+++ b/report_qweb_pdf_cover/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
+* Laura Cazorla
diff --git a/report_qweb_pdf_cover/readme/DESCRIPTION.rst b/report_qweb_pdf_cover/readme/DESCRIPTION.rst
new file mode 100644
index 0000000000..ca7792148b
--- /dev/null
+++ b/report_qweb_pdf_cover/readme/DESCRIPTION.rst
@@ -0,0 +1,5 @@
+This module allows for front and back covers to be added to the generated PDF
+reports. They can be added as a separate page, at the beginning or the end of
+the report, but they can also overlap the first and last page of the actual
+report, respectively.
+
diff --git a/report_qweb_pdf_cover/readme/USAGE.rst b/report_qweb_pdf_cover/readme/USAGE.rst
new file mode 100644
index 0000000000..812807b36a
--- /dev/null
+++ b/report_qweb_pdf_cover/readme/USAGE.rst
@@ -0,0 +1,18 @@
+To add a cover to a report, you need to access to the report's configuration,
+more specifically to the `Advanced Properties` tab. There, you will find two
+checkboxes, one for the front cover and another for the back cover.
+They both work the same, so let's focus on the front cover with an example.
+
+* You must check the `Use Front Cover` checkbox to enable the front cover. You
+ will see that a new checkbox and a PDF file widget appear.
+
+* If you want the front cover to overlap with the first page of the PDF report,
+ you should also check the `Overlap Front Cover` checkbox. Leave it unchecked
+ if you don't want the front cover to overlap with the first page.
+
+* The last step would be to upload the PDF file that will be used as the front
+ cover. You can do this by clicking on the PDF file widget and selecting the
+ file.
+
+* Important! The file must be a PDF file, and it should have only one page. If
+ it has more pages, only the first one will be used.
diff --git a/report_qweb_pdf_cover/static/description/index.html b/report_qweb_pdf_cover/static/description/index.html
new file mode 100644
index 0000000000..2f6499217a
--- /dev/null
+++ b/report_qweb_pdf_cover/static/description/index.html
@@ -0,0 +1,443 @@
+
+
+
+
+
+Report QWeb PDF Cover
+
+
+
+
+
Report QWeb PDF Cover
+
+
+

+
This module allows for front and back covers to be added to the generated PDF
+reports. They can be added as a separate page, at the beginning or the end of
+the report, but they can also overlap the first and last page of the actual
+report, respectively.
+
Table of contents
+
+
+
+
To add a cover to a report, you need to access to the report’s configuration,
+more specifically to the Advanced Properties tab. There, you will find two
+checkboxes, one for the front cover and another for the back cover.
+They both work the same, so let’s focus on the front cover with an example.
+
+- You must check the Use Front Cover checkbox to enable the front cover. You
+will see that a new checkbox and a PDF file widget appear.
+- If you want the front cover to overlap with the first page of the PDF report,
+you should also check the Overlap Front Cover checkbox. Leave it unchecked
+if you don’t want the front cover to overlap with the first page.
+- The last step would be to upload the PDF file that will be used as the front
+cover. You can do this by clicking on the PDF file widget and selecting the
+file.
+- Important! The file must be a PDF file, and it should have only one page. If
+it has more pages, only the first one will be used.
+
+
+
+
+
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 to smash 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/reporting-engine project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/report_qweb_pdf_cover/views/ir_actions_views.xml b/report_qweb_pdf_cover/views/ir_actions_views.xml
new file mode 100644
index 0000000000..f03704330f
--- /dev/null
+++ b/report_qweb_pdf_cover/views/ir_actions_views.xml
@@ -0,0 +1,38 @@
+
+
+
+ ir.actions.report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From e62268b4e50c46fa0f9d112842d0236c5e8b1e53 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Tue, 22 Oct 2024 18:27:28 +0000
Subject: [PATCH 2/8] [UPD] Update report_qweb_pdf_cover.pot
---
report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot b/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
index 109284fdf3..e416701c3c 100644
--- a/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
+++ b/report_qweb_pdf_cover/i18n/report_qweb_pdf_cover.pot
@@ -4,10 +4,8 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 16.0+e\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-27 08:08+0000\n"
-"PO-Revision-Date: 2024-08-27 08:08+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -102,8 +100,8 @@ msgstr ""
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
msgid ""
"When set, the back cover of the report will overlap with the contents of the"
-" last page of the report. This is useful to include some information of the"
-" report in the back cover."
+" last page of the report. This is useful to include some information of the "
+"report in the back cover."
msgstr ""
#. module: report_qweb_pdf_cover
From acda882207f6a6ddc0d85f440ab0a20d091aa90b Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 22 Oct 2024 18:32:01 +0000
Subject: [PATCH 3/8] [BOT] post-merge updates
---
.../static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 report_qweb_pdf_cover/static/description/icon.png
diff --git a/report_qweb_pdf_cover/static/description/icon.png b/report_qweb_pdf_cover/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 6c87334c8ab743b4ced1d017227365c473149444 Mon Sep 17 00:00:00 2001
From: Weblate
Date: Tue, 22 Oct 2024 18:51:19 +0000
Subject: [PATCH 4/8] Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.
Translation: reporting-engine-16.0/reporting-engine-16.0-report_qweb_pdf_cover
Translate-URL: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_qweb_pdf_cover/
---
report_qweb_pdf_cover/i18n/es.po | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/report_qweb_pdf_cover/i18n/es.po b/report_qweb_pdf_cover/i18n/es.po
index 03b8c28b84..eec40b8a41 100644
--- a/report_qweb_pdf_cover/i18n/es.po
+++ b/report_qweb_pdf_cover/i18n/es.po
@@ -10,6 +10,7 @@ msgstr ""
"PO-Revision-Date: 2024-08-27 08:09+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
@@ -101,9 +102,9 @@ msgstr "Usar una portada al renderizar el informe PDF."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
msgid ""
-"When set, the back cover of the report will overlap with the contents of the"
-" last page of the report. This is useful to include some information of the"
-" report in the back cover."
+"When set, the back cover of the report will overlap with the contents of the "
+"last page of the report. This is useful to include some information of the "
+"report in the back cover."
msgstr ""
"Cuando se establece, la contraportada del informe se superpondrá con el "
"contenido de la última página del informe. Esto es útil para incluir alguna "
@@ -143,8 +144,8 @@ msgstr "Su contraportada PDF no contiene ninguna página."
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid ""
-"Your front cover PDF contains more than one page, all but the first one will"
-" be ignored."
+"Your front cover PDF contains more than one page, all but the first one will "
+"be ignored."
msgstr ""
"Su portada PDF contiene más de una página, todas menos la primera se "
"ignorarán."
From 54fd3e577a82ffc68427c33b0976447d66a0b1f0 Mon Sep 17 00:00:00 2001
From: mymage
Date: Wed, 23 Oct 2024 06:37:30 +0000
Subject: [PATCH 5/8] Added translation using Weblate (Italian)
---
report_qweb_pdf_cover/i18n/it.po | 146 +++++++++++++++++++++++++++++++
1 file changed, 146 insertions(+)
create mode 100644 report_qweb_pdf_cover/i18n/it.po
diff --git a/report_qweb_pdf_cover/i18n/it.po b/report_qweb_pdf_cover/i18n/it.po
new file mode 100644
index 0000000000..092435f0f9
--- /dev/null
+++ b/report_qweb_pdf_cover/i18n/it.po
@@ -0,0 +1,146 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * report_qweb_pdf_cover
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: it\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: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Back Cover PDF"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load back cover: %s"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Failed to load front cover: %s"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Front Cover PDF"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable back cover found."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "No usable front cover found."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid "Overlap Back Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid "Overlap Front Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model,name:report_qweb_pdf_cover.model_ir_actions_report
+msgid "Report Action"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
+msgid "Upload an PDF file to use as a back cover on this report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
+msgid "Upload an PDF file to use as a front cover on this report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use Back Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use Front Cover"
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
+msgid "Use a back cover when rendering the PDF report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
+msgid "Use a front cover when rendering the PDF report."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
+msgid ""
+"When set, the back cover of the report will overlap with the contents of the"
+" last page of the report. This is useful to include some information of the "
+"report in the back cover."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
+msgid ""
+"When set, the front cover of the report will overlap with the contents of "
+"the first page of the report. This is useful to include some information of "
+"the report in the front cover."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your back cover PDF contains more than one page, all but the first one will "
+"be ignored."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your back cover PDF does not contain any pages."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid ""
+"Your front cover PDF contains more than one page, all but the first one will"
+" be ignored."
+msgstr ""
+
+#. module: report_qweb_pdf_cover
+#. odoo-python
+#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
+#, python-format
+msgid "Your front cover PDF does not contain any pages."
+msgstr ""
From ddf564f0dbb2c271f7dd79d7deb6f40e2c7ce8fd Mon Sep 17 00:00:00 2001
From: mymage
Date: Wed, 23 Oct 2024 06:38:15 +0000
Subject: [PATCH 6/8] Translated using Weblate (Italian)
Currently translated at 100.0% (21 of 21 strings)
Translation: reporting-engine-16.0/reporting-engine-16.0-report_qweb_pdf_cover
Translate-URL: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_qweb_pdf_cover/it/
---
report_qweb_pdf_cover/i18n/it.po | 47 ++++++++++++++++++++------------
1 file changed, 29 insertions(+), 18 deletions(-)
diff --git a/report_qweb_pdf_cover/i18n/it.po b/report_qweb_pdf_cover/i18n/it.po
index 092435f0f9..7c1356722d 100644
--- a/report_qweb_pdf_cover/i18n/it.po
+++ b/report_qweb_pdf_cover/i18n/it.po
@@ -6,96 +6,98 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2024-10-23 09:06+0000\n"
+"Last-Translator: mymage \n"
"Language-Team: none\n"
"Language: it\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 5.6.2\n"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
msgid "Back Cover PDF"
-msgstr ""
+msgstr "Retrocopertina PDF"
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "Failed to load back cover: %s"
-msgstr ""
+msgstr "Caricamento retrocopertina fallito: %s"
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "Failed to load front cover: %s"
-msgstr ""
+msgstr "Caricamento copertina fallito: %s"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
msgid "Front Cover PDF"
-msgstr ""
+msgstr "Copertina PDF"
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "No usable back cover found."
-msgstr ""
+msgstr "Trovata retrocopertina non utilizzabile."
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "No usable front cover found."
-msgstr ""
+msgstr "Trovata copertina non usabile."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
msgid "Overlap Back Cover"
-msgstr ""
+msgstr "Sovrapponi retrocopertina"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
msgid "Overlap Front Cover"
-msgstr ""
+msgstr "Sovrapponi copertina"
#. module: report_qweb_pdf_cover
#: model:ir.model,name:report_qweb_pdf_cover.model_ir_actions_report
msgid "Report Action"
-msgstr ""
+msgstr "Azione resoconto"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_pdf
msgid "Upload an PDF file to use as a back cover on this report."
-msgstr ""
+msgstr "Carica un file PDF da usare come retrocopertina in questo resoconto."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_pdf
msgid "Upload an PDF file to use as a front cover on this report."
-msgstr ""
+msgstr "Carica un file PDF da usare come copertina in questo resoconto."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
msgid "Use Back Cover"
-msgstr ""
+msgstr "Utilizza retrocopertina"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,field_description:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
msgid "Use Front Cover"
-msgstr ""
+msgstr "Utilizza copertina"
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_back_cover
msgid "Use a back cover when rendering the PDF report."
-msgstr ""
+msgstr "Utilizza retrocopertina nella produzione del resoconto PDF."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__use_front_cover
msgid "Use a front cover when rendering the PDF report."
-msgstr ""
+msgstr "Utilizza copertina nella produzione del resoconto PDF."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__back_cover_overlap
@@ -104,6 +106,9 @@ msgid ""
" last page of the report. This is useful to include some information of the "
"report in the back cover."
msgstr ""
+"Se impostato, la retrocopertina del resoconto si sovrapporrà al contenuto "
+"dell'ultima pagina del resoconto. Ciò è utile per includere alcune "
+"informazioni del resoconto nella retrocopertina."
#. module: report_qweb_pdf_cover
#: model:ir.model.fields,help:report_qweb_pdf_cover.field_ir_actions_report__front_cover_overlap
@@ -112,6 +117,9 @@ msgid ""
"the first page of the report. This is useful to include some information of "
"the report in the front cover."
msgstr ""
+"Se impostato, la copertina del resoconto si sovrapporrà al contenuto della "
+"prima pagina del resoconto. Ciò è utile per includere alcune informazioni "
+"del resoconto nella copertina."
#. module: report_qweb_pdf_cover
#. odoo-python
@@ -121,13 +129,15 @@ msgid ""
"Your back cover PDF contains more than one page, all but the first one will "
"be ignored."
msgstr ""
+"La retrocopertina PDF contiene più di una pagina, verrà considerata solo la "
+"prima."
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "Your back cover PDF does not contain any pages."
-msgstr ""
+msgstr "La retrocopertina PDF non contiene alcuna pagina."
#. module: report_qweb_pdf_cover
#. odoo-python
@@ -137,10 +147,11 @@ msgid ""
"Your front cover PDF contains more than one page, all but the first one will"
" be ignored."
msgstr ""
+"La copertina PDF contiene più di una pagina, verrà considerata solo la prima."
#. module: report_qweb_pdf_cover
#. odoo-python
#: code:addons/report_qweb_pdf_cover/models/ir_actions_report.py:0
#, python-format
msgid "Your front cover PDF does not contain any pages."
-msgstr ""
+msgstr "La copertina PDF non contiene alcuna pagina."
From e2d4f1db6c0087615b4395c376233c4acced37ef Mon Sep 17 00:00:00 2001
From: ntsirintanis
Date: Mon, 13 Jan 2025 12:11:54 +0100
Subject: [PATCH 7/8] [IMP] report_qweb_pdf_cover: pre-commit stuff
---
.../report_qweb_pdf_cover/odoo/addons/report_qweb_pdf_cover | 1 +
setup/report_qweb_pdf_cover/setup.py | 6 ++++++
2 files changed, 7 insertions(+)
create mode 120000 setup/report_qweb_pdf_cover/odoo/addons/report_qweb_pdf_cover
create mode 100644 setup/report_qweb_pdf_cover/setup.py
diff --git a/setup/report_qweb_pdf_cover/odoo/addons/report_qweb_pdf_cover b/setup/report_qweb_pdf_cover/odoo/addons/report_qweb_pdf_cover
new file mode 120000
index 0000000000..ddfe45659c
--- /dev/null
+++ b/setup/report_qweb_pdf_cover/odoo/addons/report_qweb_pdf_cover
@@ -0,0 +1 @@
+../../../../report_qweb_pdf_cover
\ No newline at end of file
diff --git a/setup/report_qweb_pdf_cover/setup.py b/setup/report_qweb_pdf_cover/setup.py
new file mode 100644
index 0000000000..28c57bb640
--- /dev/null
+++ b/setup/report_qweb_pdf_cover/setup.py
@@ -0,0 +1,6 @@
+import setuptools
+
+setuptools.setup(
+ setup_requires=['setuptools-odoo'],
+ odoo_addon=True,
+)
From 00b4c228d09e96ca1c03e9a4c4316fbb90809dd5 Mon Sep 17 00:00:00 2001
From: ntsirintanis
Date: Mon, 13 Jan 2025 12:42:20 +0100
Subject: [PATCH 8/8] [IMP] report_qweb_pdf: Backport to 14.0
---
report_qweb_pdf_cover/README.rst | 10 ++++----
report_qweb_pdf_cover/__manifest__.py | 2 +-
.../models/ir_actions_report.py | 23 +++++++------------
.../static/description/index.html | 17 ++++++++------
4 files changed, 24 insertions(+), 28 deletions(-)
diff --git a/report_qweb_pdf_cover/README.rst b/report_qweb_pdf_cover/README.rst
index 989b5165cc..9014b2a146 100644
--- a/report_qweb_pdf_cover/README.rst
+++ b/report_qweb_pdf_cover/README.rst
@@ -17,13 +17,13 @@ Report QWeb PDF Cover
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
- :target: https://github.com/OCA/reporting-engine/tree/16.0/report_qweb_pdf_cover
+ :target: https://github.com/OCA/reporting-engine/tree/14.0/report_qweb_pdf_cover
: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-16-0/reporting-engine-16-0-report_qweb_pdf_cover
+ :target: https://translation.odoo-community.org/projects/reporting-engine-14-0/reporting-engine-14-0-report_qweb_pdf_cover
: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/reporting-engine&target_branch=16.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=14.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -67,7 +67,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 to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -97,6 +97,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/reporting-engine `_ 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/report_qweb_pdf_cover/__manifest__.py b/report_qweb_pdf_cover/__manifest__.py
index b0234148f8..46ec82600f 100644
--- a/report_qweb_pdf_cover/__manifest__.py
+++ b/report_qweb_pdf_cover/__manifest__.py
@@ -7,7 +7,7 @@
"author": "ForgeFlow, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"category": "Reporting",
- "version": "16.0.1.0.0",
+ "version": "14.0.1.0.0",
"license": "AGPL-3",
"depends": ["web"],
"data": ["views/ir_actions_views.xml"],
diff --git a/report_qweb_pdf_cover/models/ir_actions_report.py b/report_qweb_pdf_cover/models/ir_actions_report.py
index d06d502b2b..cf4bf3bfd3 100644
--- a/report_qweb_pdf_cover/models/ir_actions_report.py
+++ b/report_qweb_pdf_cover/models/ir_actions_report.py
@@ -71,15 +71,13 @@ def pdf_check_pages(self, num_pages, front=True):
)
return True
- def load_covers(
- self, report_sudo, front_cover, back_cover, use_front_cover, use_back_cover
- ):
+ def load_covers(self, front_cover, back_cover, use_front_cover, use_back_cover):
if use_front_cover:
- front_cover_pdf = self.front_cover_pdf or report_sudo.front_cover_pdf
+ front_cover_pdf = self.front_cover_pdf
if front_cover_pdf:
front_cover = b64decode(front_cover_pdf)
if use_back_cover:
- back_cover_pdf = self.back_cover_pdf or report_sudo.back_cover_pdf
+ back_cover_pdf = self.back_cover_pdf
if back_cover_pdf:
back_cover = b64decode(back_cover_pdf)
return front_cover, back_cover
@@ -147,7 +145,6 @@ def insert_cover_pages(
def _run_wkhtmltopdf(
self,
bodies,
- report_ref=False,
header=None,
footer=None,
landscape=False,
@@ -156,7 +153,6 @@ def _run_wkhtmltopdf(
):
result = super()._run_wkhtmltopdf(
bodies,
- report_ref=report_ref,
header=header,
footer=footer,
landscape=landscape,
@@ -164,20 +160,17 @@ def _run_wkhtmltopdf(
set_viewport_size=set_viewport_size,
)
- report_sudo = self._get_report(report_ref)
front_cover = False
back_cover = False
- use_front_cover = self.use_front_cover or report_sudo.use_front_cover
- use_back_cover = self.use_back_cover or report_sudo.use_back_cover
- front_cover_overlap = (
- self.front_cover_overlap or report_sudo.front_cover_overlap
- )
- back_cover_overlap = self.back_cover_overlap or report_sudo.back_cover_overlap
+ use_front_cover = self.use_front_cover
+ use_back_cover = self.use_back_cover
+ front_cover_overlap = self.front_cover_overlap
+ back_cover_overlap = self.back_cover_overlap
if not use_front_cover and not use_back_cover:
return result
front_cover, back_cover = self.load_covers(
- report_sudo, front_cover, back_cover, use_front_cover, use_back_cover
+ front_cover, back_cover, use_front_cover, use_back_cover
)
if not front_cover and not back_cover:
return result
diff --git a/report_qweb_pdf_cover/static/description/index.html b/report_qweb_pdf_cover/static/description/index.html
index 2f6499217a..4b9de577e8 100644
--- a/report_qweb_pdf_cover/static/description/index.html
+++ b/report_qweb_pdf_cover/static/description/index.html
@@ -8,10 +8,11 @@
/*
:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
+:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
+Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
@@ -274,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }
-pre.code .ln { color: grey; } /* line numbers */
+pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@@ -300,7 +301,7 @@
span.pre {
white-space: pre }
-span.problematic {
+span.problematic, pre.problematic {
color: red }
span.section-subtitle {
@@ -368,7 +369,7 @@ Report QWeb PDF Cover
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:1287ee62d703ed048f33bb706f289cf01e5c99bead22b8b612d69e88071a4d67
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This module allows for front and back covers to be added to the generated PDF
reports. They can be added as a separate page, at the beginning or the end of
the report, but they can also overlap the first and last page of the actual
@@ -410,7 +411,7 @@
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 to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -430,11 +431,13 @@
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/reporting-engine 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.