mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
|
|
|
|
from odoo import fields, models
|
|
|
|
# Define all supported report_type
|
|
REPORT_TYPES = ["qweb-pdf", "qweb-text", "qweb-xml", "csv", "excel", "xlsx"]
|
|
|
|
|
|
class Report(models.Model):
|
|
_inherit = "ir.actions.report"
|
|
|
|
async_report = fields.Boolean(default=False)
|
|
async_no_records = fields.Integer(
|
|
string="Min of Records",
|
|
default=100,
|
|
help="Min no of records to use async report functionality; e.g 100+",
|
|
)
|
|
async_mail_recipient = fields.Char(
|
|
string="Mail Recipient",
|
|
help="The email that will receive the async report",
|
|
default=lambda self: self.env.user.email,
|
|
)
|
|
|
|
def report_action(self, docids, data=None, config=True):
|
|
res = super(Report, self).report_action(docids, data=data, config=config)
|
|
if res["context"].get("async_process", False):
|
|
rpt_async_id = res["context"]["active_id"]
|
|
report_async = self.env["report.async"].browse(rpt_async_id)
|
|
if res["report_type"] in REPORT_TYPES:
|
|
report_async.with_delay().run_report(
|
|
res["context"].get("active_ids", []), data, self.id, self._uid
|
|
)
|
|
return {}
|
|
return res
|