mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[ADD] report_qweb_encrypt
This commit is contained in:
1
report_qweb_encrypt/models/__init__.py
Normal file
1
report_qweb_encrypt/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import ir_actions_report
|
||||
33
report_qweb_encrypt/models/ir_actions_report.py
Normal file
33
report_qweb_encrypt/models/ir_actions_report.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Copyright 2020 Creu Blanca
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
import logging
|
||||
from io import BytesIO
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
try:
|
||||
from PyPDF2 import PdfFileReader, PdfFileWriter
|
||||
except ImportError as err:
|
||||
_logger.debug(err)
|
||||
|
||||
|
||||
class IrActionsReport(models.Model):
|
||||
|
||||
_inherit = 'ir.actions.report'
|
||||
|
||||
encrypt = fields.Boolean()
|
||||
|
||||
def render_qweb_pdf(self, res_ids=None, data=None):
|
||||
document, type = super(IrActionsReport, self).render_qweb_pdf(
|
||||
res_ids=res_ids, data=data)
|
||||
if self.encrypt and self.env.context.get('encrypt_password', False):
|
||||
output_pdf = PdfFileWriter()
|
||||
in_buff = BytesIO(document)
|
||||
pdf = PdfFileReader(in_buff)
|
||||
output_pdf.appendPagesFromReader(pdf)
|
||||
output_pdf.encrypt(self.env.context.get('encrypt_password'))
|
||||
buff = BytesIO()
|
||||
output_pdf.write(buff)
|
||||
document = buff.getvalue()
|
||||
return document, type
|
||||
Reference in New Issue
Block a user