Files
Odoo-Modules/pdf_print_preview/controllers/main.py
2026-02-22 01:22:18 -05:00

42 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
import json
import werkzeug.exceptions
from odoo import http
from odoo.http import request
from odoo.tools.safe_eval import safe_eval, time
class PrintPreviewController(http.Controller):
@http.route('/pdf_print_preview/get_report_name', type='json', auth='user')
def get_report_name(self, report_name=False, data={}):
file_name = ''
if not report_name:
raise werkzeug.exceptions.HTTPException(
description="Cannot found report name in param")
report = request.env['ir.actions.report']._get_report_from_name(
report_name)
if not report:
raise werkzeug.exceptions.HTTPException(
description=f"Cannot found report with name ( {report_name} )")
print_report_name = report.print_report_name
data = json.loads(data)
res_ids = data.get('active_ids', [])
records = request.env[report.model].browse(res_ids)
try:
if print_report_name and not len(records) > 1:
file_name = safe_eval(print_report_name, {
'object': records, 'time': time})
except:
pass
return {
'file_name': file_name,
'wkhtmltopdf_state': request.env['ir.actions.report'].get_wkhtmltopdf_state(),
}