38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import traceback
|
|
|
|
from odoo import fields, models, tools
|
|
from odoo.exceptions import ValidationError, UserError
|
|
|
|
|
|
class IrActionsReport(models.Model):
|
|
_inherit = "ir.actions.report"
|
|
|
|
fusion_preview_mode = fields.Selection([
|
|
('default', 'Use User Preference'),
|
|
('preview', 'Always Preview'),
|
|
('download', 'Always Download'),
|
|
('auto_print', 'Always Auto-Print'),
|
|
], string='PDF Preview Mode', default='default',
|
|
help='Override user-level PDF preview settings for this specific report.')
|
|
|
|
def _render_qweb_pdf(self, report_ref, res_ids=None, data=None):
|
|
if tools.config['test_enable'] or tools.config['test_file']:
|
|
return super()._render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
|
|
|
|
result = False, False
|
|
message_error = False
|
|
try:
|
|
result = super()._render_qweb_pdf(report_ref, res_ids=res_ids, data=data)
|
|
except (UserError, ValidationError) as e:
|
|
message_error = str(e)
|
|
except Exception:
|
|
message_error = traceback.format_exc()
|
|
|
|
if message_error:
|
|
report_ref = "fusion_pdf_preview.report_error_catcher"
|
|
data = {'error': message_error}
|
|
result = super()._render_qweb_pdf(report_ref, res_ids=[], data=data)
|
|
return result
|