From 97c3445364ceca7f3f4a6d794a1e88d5bed24135 Mon Sep 17 00:00:00 2001 From: Kitti U Date: Wed, 10 Feb 2021 00:12:38 +0700 Subject: [PATCH] [14.0][MIG] report_qweb_encrypt --- .travis.yml | 1 + report_qweb_encrypt/README.rst | 18 +- report_qweb_encrypt/__manifest__.py | 2 +- .../i18n/report_qweb_encrypt.pot | 84 ---- .../models/ir_actions_report.py | 14 +- .../static/description/index.html | 433 ------------------ .../src/js/report/action_manager_report.js | 8 +- .../tests/test_report_qweb_encrypt.py | 8 +- 8 files changed, 20 insertions(+), 548 deletions(-) delete mode 100644 report_qweb_encrypt/i18n/report_qweb_encrypt.pot delete mode 100644 report_qweb_encrypt/static/description/index.html diff --git a/.travis.yml b/.travis.yml index 5e8e3a66..ff612d45 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,6 +33,7 @@ install: - git clone --depth=1 https://github.com/OCA/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools - export PATH=${HOME}/maintainer-quality-tools/travis:${PATH} + - export WKHTMLTOPDF_VERSION=0.12.4 - travis_install_nightly script: diff --git a/report_qweb_encrypt/README.rst b/report_qweb_encrypt/README.rst index 66c5a835..967084e6 100644 --- a/report_qweb_encrypt/README.rst +++ b/report_qweb_encrypt/README.rst @@ -25,10 +25,8 @@ Report Qweb Encrypt |badge1| |badge2| |badge3| |badge4| |badge5| -This module allow you to encrypt PDF with a password seting option, - -* Manually keyin password (only applicable for record print action) -* Auto generated password based on object data (python) +This module allows you to encrypt pdf files with a password when +downloading them. **Table of contents** @@ -38,7 +36,7 @@ This module allow you to encrypt PDF with a password seting option, Usage ===== -To make a report encryptable mark the field `Encryption` in the report record. +To make a report encryptable mark the field `Encryptable` in the report record. Bug Tracker =========== @@ -57,14 +55,12 @@ Authors ~~~~~~~ * Creu Blanca -* Ecosoft Contributors ~~~~~~~~~~~~ * Enric Tobella * Jaime Arroyo -* Kitti U. Maintainers ~~~~~~~~~~~ @@ -79,14 +75,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. -.. |maintainer-kittiu| image:: https://github.com/kittiu.png?size=40px - :target: https://github.com/kittiu - :alt: kittiu - -Current `maintainer `__: - -|maintainer-kittiu| - 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_encrypt/__manifest__.py b/report_qweb_encrypt/__manifest__.py index afc2fc68..299b595b 100644 --- a/report_qweb_encrypt/__manifest__.py +++ b/report_qweb_encrypt/__manifest__.py @@ -5,7 +5,7 @@ { "name": "Report Qweb Encrypt", "summary": "Allow to encrypt qweb pdfs", - "version": "12.0.1.0.0", + "version": "14.0.1.0.0", "license": "AGPL-3", "author": "Creu Blanca,Ecosoft,Odoo Community Association (OCA)", "website": "https://github.com/OCA/reporting-engine", diff --git a/report_qweb_encrypt/i18n/report_qweb_encrypt.pot b/report_qweb_encrypt/i18n/report_qweb_encrypt.pot deleted file mode 100644 index 52fed741..00000000 --- a/report_qweb_encrypt/i18n/report_qweb_encrypt.pot +++ /dev/null @@ -1,84 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * report_qweb_encrypt -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: report_qweb_encrypt -#: model:ir.model.fields,help:report_qweb_encrypt.field_ir_actions_report__encrypt -msgid "* Manual Input Password: allow user to key in password on the fly. This option available only on document print action.\n" -"* Auto Generated Password: system will auto encrypt password when PDF created, based on provided python syntax." -msgstr "" - -#. module: report_qweb_encrypt -#: selection:ir.actions.report,encrypt:0 -msgid "Auto Generated Password" -msgstr "" - -#. module: report_qweb_encrypt -#. openerp-web -#: code:addons/report_qweb_encrypt/static/src/js/report/action_manager_report.js:37 -#, python-format -msgid "Cancel" -msgstr "" - -#. module: report_qweb_encrypt -#. openerp-web -#: code:addons/report_qweb_encrypt/static/src/js/report/action_manager_report.js:46 -#, python-format -msgid "Encrypt" -msgstr "" - -#. module: report_qweb_encrypt -#: model:ir.model.fields,field_description:report_qweb_encrypt.field_ir_actions_report__encrypt_password -msgid "Encrypt Password" -msgstr "" - -#. module: report_qweb_encrypt -#: model:ir.model.fields,field_description:report_qweb_encrypt.field_ir_actions_report__encrypt -msgid "Encryption" -msgstr "" - -#. module: report_qweb_encrypt -#: selection:ir.actions.report,encrypt:0 -msgid "Manual Input Password" -msgstr "" - -#. module: report_qweb_encrypt -#. openerp-web -#: code:addons/report_qweb_encrypt/static/src/js/report/action_manager_report.js:28 -#, python-format -msgid "Ok" -msgstr "" - -#. module: report_qweb_encrypt -#: model:ir.model.fields,help:report_qweb_encrypt.field_ir_actions_report__encrypt_password -msgid "Python code syntax to gnerate password." -msgstr "" - -#. module: report_qweb_encrypt -#: code:addons/report_qweb_encrypt/models/ir_actions_report.py:58 -#, python-format -msgid "Python code used for encryption password is invalid.\n" -"%s" -msgstr "" - -#. module: report_qweb_encrypt -#: model:ir.model,name:report_qweb_encrypt.model_ir_actions_report -msgid "Report Action" -msgstr "" - -#. module: report_qweb_encrypt -#: model_terms:ir.ui.view,arch_db:report_qweb_encrypt.ir_actions_report_form_view -msgid "python syntax, i.e., (object.default_code or 'secretcode')" -msgstr "" - diff --git a/report_qweb_encrypt/models/ir_actions_report.py b/report_qweb_encrypt/models/ir_actions_report.py index df8dec37..c4a00dd1 100644 --- a/report_qweb_encrypt/models/ir_actions_report.py +++ b/report_qweb_encrypt/models/ir_actions_report.py @@ -2,7 +2,6 @@ # Copyright 2020 Ecosoft Co., Ltd. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import logging -import time from io import BytesIO from odoo import _, fields, models @@ -31,8 +30,8 @@ class IrActionsReport(models.Model): help="Python code syntax to gnerate password.", ) - def render_qweb_pdf(self, res_ids=None, data=None): - document, ttype = super(IrActionsReport, self).render_qweb_pdf( + def _render_qweb_pdf(self, res_ids=None, data=None): + document, ttype = super(IrActionsReport, self)._render_qweb_pdf( res_ids=res_ids, data=data ) password = self._get_pdf_password(res_ids[:1]) @@ -51,10 +50,8 @@ class IrActionsReport(models.Model): elif self.encrypt == "auto" and self.encrypt_password: obj = self.env[self.model].browse(res_id) try: - encrypt_password = safe_eval( - self.encrypt_password, {"object": obj, "time": time} - ) - except: + encrypt_password = safe_eval(self.encrypt_password, {"object": obj}) + except Exception: raise ValidationError( _("Python code used for encryption password is invalid.\n%s") % self.encrypt_password @@ -72,3 +69,6 @@ class IrActionsReport(models.Model): buff = BytesIO() output_pdf.write(buff) return buff.getvalue() + + def _get_readable_fields(self): + return super()._get_readable_fields() | {"encrypt"} diff --git a/report_qweb_encrypt/static/description/index.html b/report_qweb_encrypt/static/description/index.html deleted file mode 100644 index b6aca0e0..00000000 --- a/report_qweb_encrypt/static/description/index.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - - - -Report Qweb Encrypt - - - -
-

Report Qweb Encrypt

- - -

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

-

This module allow you to encrypt PDF with a password seting option,

-
    -
  • Manually keyin password (only applicable for record print action)
  • -
  • Auto generated password based on object data (python)
  • -
-

Table of contents

- -
-

Usage

-

To make a report encryptable mark the field Encryption in the report record.

-
-
-

Bug Tracker

-

Bugs are tracked on GitHub Issues. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

-

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

-
-
-

Credits

-
-

Authors

-
    -
  • Creu Blanca
  • -
  • Ecosoft
  • -
-
-
-

Contributors

- -
-
-

Maintainers

-

This module is maintained by the OCA.

-Odoo Community Association -

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.

-

Current maintainer:

-

kittiu

-

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_encrypt/static/src/js/report/action_manager_report.js b/report_qweb_encrypt/static/src/js/report/action_manager_report.js index 0c6b9c64..37695486 100644 --- a/report_qweb_encrypt/static/src/js/report/action_manager_report.js +++ b/report_qweb_encrypt/static/src/js/report/action_manager_report.js @@ -4,7 +4,6 @@ odoo.define("report_qweb_encrypt.Dialog", function (require) { "use strict"; var ActionManager = require("web.ActionManager"); - var framework = require("web.framework"); var Dialog = require("web.Dialog"); var core = require("web.core"); @@ -17,7 +16,7 @@ odoo.define("report_qweb_encrypt.Dialog", function (require) { _setValue: function () { this.value = this.$el.find(".o_password").val(); }, - _onChange: function (event) { + _onChange: function () { this._setValue(); }, }); @@ -27,7 +26,7 @@ odoo.define("report_qweb_encrypt.Dialog", function (require) { text: _t("Ok"), classes: "btn-primary", close: true, - click: function (event) { + click: function () { var password = this.value || false; owner._executeReportAction(action, action_options, password); }, @@ -86,7 +85,8 @@ odoo.define("report_qweb_encrypt.Dialog", function (require) { }) ); reportUrls = _.mapObject(reportUrls, function (value) { - return (value += serializedOptionsPath); + value += serializedOptionsPath; + return value; }); } } diff --git a/report_qweb_encrypt/tests/test_report_qweb_encrypt.py b/report_qweb_encrypt/tests/test_report_qweb_encrypt.py index 02e69665..b13ae934 100644 --- a/report_qweb_encrypt/tests/test_report_qweb_encrypt.py +++ b/report_qweb_encrypt/tests/test_report_qweb_encrypt.py @@ -9,7 +9,7 @@ class TestReportQwebEncrypt(HttpCase): ctx = {"force_report_rendering": True} report = self.env.ref("web.action_report_internalpreview") report.encrypt = False - pdf, _ = report.with_context(ctx).render_qweb_pdf([1]) + pdf, _ = report.with_context(ctx)._render_qweb_pdf([1]) self.assertFalse(pdf.count(b"/Encrypt")) def test_report_qweb_auto_encrypt(self): @@ -18,15 +18,15 @@ class TestReportQwebEncrypt(HttpCase): report.encrypt = "auto" report.encrypt_password = False # If no encrypt_password, still not encrypted - pdf, _ = report.with_context(ctx).render_qweb_pdf([1]) + pdf, _ = report.with_context(ctx)._render_qweb_pdf([1]) self.assertFalse(pdf.count(b"/Encrypt")) # If invalid encrypt_password, show error report.encrypt_password = "invalid python syntax" with self.assertRaises(ValidationError): - pdf, _ = report.with_context(ctx).render_qweb_pdf([1]) + pdf, _ = report.with_context(ctx)._render_qweb_pdf([1]) # Valid python string for password report.encrypt_password = "'secretcode'" - pdf, _ = report.with_context(ctx).render_qweb_pdf([1]) + pdf, _ = report.with_context(ctx)._render_qweb_pdf([1]) self.assertTrue(pdf.count(b"/Encrypt")) # TODO: test_report_qweb_manual_encrypt, require JS test?