From fe281ec4b8058459baa73690141408f0fc69e4b6 Mon Sep 17 00:00:00 2001 From: "anjeel.haria" Date: Mon, 13 Mar 2023 15:11:27 +0100 Subject: [PATCH] [MIG] report_qweb_pdf_watermark: Migration to 16.0 Syntax Fixes --- report_qweb_pdf_watermark/__manifest__.py | 2 +- report_qweb_pdf_watermark/models/report.py | 29 ++++++++++++++----- .../readme/CONTRIBUTORS.rst | 1 + report_qweb_pdf_watermark/readme/HISTORY.rst | 5 ++++ .../static/description/index.html | 22 +++++++++----- .../tests/test_report_qweb_pdf_watermark.py | 11 +++++-- 6 files changed, 51 insertions(+), 19 deletions(-) diff --git a/report_qweb_pdf_watermark/__manifest__.py b/report_qweb_pdf_watermark/__manifest__.py index 0291a0736..26b350f8d 100644 --- a/report_qweb_pdf_watermark/__manifest__.py +++ b/report_qweb_pdf_watermark/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Pdf watermark", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "author": "Therp BV, " "Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Technical Settings", diff --git a/report_qweb_pdf_watermark/models/report.py b/report_qweb_pdf_watermark/models/report.py index b5845228c..b48516933 100644 --- a/report_qweb_pdf_watermark/models/report.py +++ b/report_qweb_pdf_watermark/models/report.py @@ -1,4 +1,5 @@ # © 2016 Therp BV +# Copyright 2023 Onestein - Anjeel Haria # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from base64 import b64decode from io import BytesIO @@ -41,12 +42,14 @@ class Report(models.Model): "You have access to variables `env` and `docs`", ) - def _render_qweb_pdf(self, res_ids=None, data=None): + def _render_qweb_pdf(self, report_ref, res_ids=None, data=None): if not self.env.context.get("res_ids"): return super(Report, self.with_context(res_ids=res_ids))._render_qweb_pdf( - res_ids=res_ids, data=data + report_ref, res_ids=res_ids, data=data ) - return super(Report, self)._render_qweb_pdf(res_ids=res_ids, data=data) + return super(Report, self)._render_qweb_pdf( + report_ref, res_ids=res_ids, data=data + ) def pdf_has_usable_pages(self, numpages): if numpages < 1: @@ -63,6 +66,7 @@ class Report(models.Model): def _run_wkhtmltopdf( self, bodies, + report_ref=False, header=None, footer=None, landscape=False, @@ -71,6 +75,7 @@ class Report(models.Model): ): result = super(Report, self)._run_wkhtmltopdf( bodies, + report_ref=report_ref, header=header, footer=footer, landscape=landscape, @@ -79,15 +84,23 @@ class Report(models.Model): ) docids = self.env.context.get("res_ids", False) + report_sudo = self._get_report(report_ref) watermark = None - if self.pdf_watermark: - watermark = b64decode(self.pdf_watermark) - elif self.use_company_watermark and self.env.company.pdf_watermark: + if self.pdf_watermark or report_sudo.pdf_watermark: + watermark = b64decode(self.pdf_watermark or report_sudo.pdf_watermark) + elif ( + self.use_company_watermark or report_sudo.use_company_watermark + ) and self.env.company.pdf_watermark: watermark = b64decode(self.env.company.pdf_watermark) elif docids: watermark = safe_eval( - self.pdf_watermark_expression or "None", - dict(env=self.env, docs=self.env[self.model].browse(docids)), + self.pdf_watermark_expression + or report_sudo.pdf_watermark_expression + or "None", + dict( + env=self.env, + docs=self.env[self.model or report_sudo.model].browse(docids), + ), ) if watermark: watermark = b64decode(watermark) diff --git a/report_qweb_pdf_watermark/readme/CONTRIBUTORS.rst b/report_qweb_pdf_watermark/readme/CONTRIBUTORS.rst index ccce2bb44..cd5afe984 100644 --- a/report_qweb_pdf_watermark/readme/CONTRIBUTORS.rst +++ b/report_qweb_pdf_watermark/readme/CONTRIBUTORS.rst @@ -4,3 +4,4 @@ * Robin Goots * Foram Shah * Emiel van Bokhoven +* Anjeel Haria diff --git a/report_qweb_pdf_watermark/readme/HISTORY.rst b/report_qweb_pdf_watermark/readme/HISTORY.rst index a87254f69..caf0c913c 100644 --- a/report_qweb_pdf_watermark/readme/HISTORY.rst +++ b/report_qweb_pdf_watermark/readme/HISTORY.rst @@ -21,3 +21,8 @@ * [MIG] Migration to V15. * Define pdf watermark in company settings + +16.0.1.0.0 (2023-03-13) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [MIG] Migration to V16. diff --git a/report_qweb_pdf_watermark/static/description/index.html b/report_qweb_pdf_watermark/static/description/index.html index 7e60ebb21..eabbdb4dd 100644 --- a/report_qweb_pdf_watermark/static/description/index.html +++ b/report_qweb_pdf_watermark/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Production/Stable License: AGPL-3 OCA/reporting-engine Translate me on Weblate Try me on Runbot

+

Production/Stable License: AGPL-3 OCA/reporting-engine Translate me on Weblate Try me on Runbot

This module was written to add watermarks (backgrounds) to PDF reports. Because of the way wkhtmltopdf handles headers and footers in the current versions, it is quite impossible to have a background for the complete page using HTML and CSS. That is why this module inserts the image at the PDF level.

Table of contents

@@ -380,13 +380,14 @@ ul.auto-toc {
  • 13.0.1.0.0 (2021-01-27)
  • 14.0.1.0.0 (2021-01-29)
  • 15.0.1.0.0 (2022-01-11)
  • +
  • 16.0.1.0.0 (2023-03-13)
  • -
  • Bug Tracker
  • -
  • Credits @@ -453,6 +454,12 @@ And demo report is available (if you have demo data installed) on the users form
  • Define pdf watermark in company settings
  • +
    +

    16.0.1.0.0 (2023-03-13)

    +
      +
    • [MIG] Migration to V16.
    • +
    +

    Bug Tracker

    @@ -479,6 +486,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
  • Robin Goots <robin.goots@dynapps.be>
  • Foram Shah <foram.shah@initos.com>
  • Emiel van Bokhoven <emiel@360erp.nl>
  • +
  • Anjeel Haria
  • @@ -488,7 +496,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/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_watermark/tests/test_report_qweb_pdf_watermark.py b/report_qweb_pdf_watermark/tests/test_report_qweb_pdf_watermark.py index 68d3fd8ad..4eb66cd96 100644 --- a/report_qweb_pdf_watermark/tests/test_report_qweb_pdf_watermark.py +++ b/report_qweb_pdf_watermark/tests/test_report_qweb_pdf_watermark.py @@ -1,4 +1,5 @@ # © 2016 Therp BV +# Copyright 2023 Onestein - Anjeel Haria # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from PIL import Image @@ -36,9 +37,13 @@ class TestReportQwebPdfWatermark(HttpCase): self._test_report_images(3) def _test_report_images(self, number): - report = self.env.ref("report_qweb_pdf_watermark.demo_report") - pdf, _ = report.with_context(force_report_rendering=True)._render_qweb_pdf( - self.env["res.users"].search([]).ids + pdf, _ = ( + self.env["ir.actions.report"] + .with_context(force_report_rendering=True) + ._render_qweb_pdf( + "report_qweb_pdf_watermark.demo_report", + self.env["res.users"].search([]).ids, + ) ) self.assertEqual(pdf.count(b"/Subtype /Image"), number)