Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
1
report_qweb_encrypt/controllers/__init__.py
Normal file
1
report_qweb_encrypt/controllers/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import main
|
||||
39
report_qweb_encrypt/controllers/main.py
Normal file
39
report_qweb_encrypt/controllers/main.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# Copyright 2020 Creu Blanca
|
||||
# Copyright 2020 Ecosoft Co., Ltd.
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
import json
|
||||
|
||||
from werkzeug.urls import url_decode
|
||||
|
||||
from odoo.http import request, route
|
||||
|
||||
from odoo.addons.web.controllers.report import ReportController
|
||||
|
||||
|
||||
class ReportControllerEncrypt(ReportController):
|
||||
@route()
|
||||
def report_download(self, data, context=None, token=None, readonly=True):
|
||||
result = super().report_download(
|
||||
data, context=context, token=token, readonly=readonly
|
||||
)
|
||||
# When report is downloaded from print action, this function is called,
|
||||
# but this function cannot pass context (manually entered password) to
|
||||
# report.render_qweb_pdf(), encrypton for manual password is done here.
|
||||
if result.headers.get("Content-Type") != "application/pdf":
|
||||
return result
|
||||
request_content = json.loads(data)
|
||||
url, ttype = request_content[0], request_content[1]
|
||||
if ttype != "qweb-pdf" or "?" not in url:
|
||||
return result
|
||||
args = dict(
|
||||
url_decode(url.split("?", 1)[1])
|
||||
) # decoding the args represented in JSON
|
||||
data_context = json.loads(args.get("context", "{}"))
|
||||
encrypt_password = data_context.get("encrypt_password")
|
||||
if not encrypt_password:
|
||||
return result
|
||||
encrypted_data = request.env["ir.actions.report"]._encrypt_pdf(
|
||||
result.get_data(), encrypt_password
|
||||
)
|
||||
result.set_data(encrypted_data)
|
||||
return result
|
||||
Reference in New Issue
Block a user