main.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # -*- coding: utf-8 -*-
  2. from openerp import http
  3. from openerp.http import request
  4. from openerp.report import render_report
  5. import base64
  6. class PrintEngineController(http.Controller):
  7. '''
  8. '''
  9. @http.route('/printer_bridge/socket_config', auth='user', type='json')
  10. def socket_config(self, **kw):
  11. res_user = request.env.user
  12. return {
  13. 'host': res_user.tray_host or None,
  14. 'port': res_user.tray_port or None,
  15. 'path': res_user.tray_path or None,
  16. 'print_directly': res_user.tray_print_directly or False,
  17. 'action_download_pdf': res_user.action_download_pdf or False,
  18. 'action_preview_pdf': res_user.action_preview_pdf or False
  19. }
  20. '''
  21. '''
  22. @http.route('/printer_bridge/get_pdf', auth='user', type='json')
  23. def get_pdf(self, **kw):
  24. ctx = request.context
  25. ir_action = request.env['ir.actions.report.xml'].browse(ctx.get('params').get('action'))
  26. res_ids = request.env[ctx.get('active_model')].browse(ctx.get('active_ids'))
  27. if ir_action.report_type in ['qweb-html', 'qweb-pdf']:
  28. result, format = request.env['report'].get_pdf(res_ids, ir_action.report_name), 'pdf'
  29. else:
  30. # TODO: mejorar el renderización de reportes rml de la api v7 a v8
  31. result, format = render_report(request._cr, request.uid, [res_ids.id], ir_action.report_name, {'model': ctx.get('active_model')}, ctx)
  32. encoded_result = base64.b64encode(result)
  33. return {
  34. 'data': 'data:application/%s;base64,%s' % (format, encoded_result)
  35. }