# -*- coding: utf-8 -*- from openerp import http from openerp.http import request from openerp.report import render_report import base64 class PrintEngineController(http.Controller): ''' ''' @http.route('/printer_bridge/socket_config', auth='user', type='json') def socket_config(self, **kw): res_user = request.env.user return { 'host': res_user.tray_host or None, 'port': res_user.tray_port or None, 'path': res_user.tray_path or None, 'print_directly': res_user.tray_print_directly or False, 'action_download_pdf': res_user.action_download_pdf or False, 'action_preview_pdf': res_user.action_preview_pdf or False } ''' ''' @http.route('/printer_bridge/get_pdf', auth='user', type='json') def get_pdf(self, **kw): ctx = request.context ir_action = request.env['ir.actions.report.xml'].browse(ctx.get('params').get('action')) res_ids = request.env[ctx.get('active_model')].browse(ctx.get('active_ids')) if ir_action.report_type in ['qweb-html', 'qweb-pdf']: result, format = request.env['report'].get_pdf(res_ids, ir_action.report_name), 'pdf' else: # TODO: mejorar el renderización de reportes rml de la api v7 a v8 result, format = render_report(request._cr, request.uid, [res_ids.id], ir_action.report_name, {'model': ctx.get('active_model')}, ctx) encoded_result = base64.b64encode(result) return { 'data': 'data:application/%s;base64,%s' % (format, encoded_result) }