# Part of Odoo. See LICENSE file for full copyright and licensing details. import json import logging import werkzeug import werkzeug.exceptions import werkzeug.utils import werkzeug.wrappers import werkzeug.wsgi from werkzeug.urls import url_parse from odoo import http from odoo.http import content_disposition, request from odoo.tools.safe_eval import safe_eval, time from odoo.addons.web.controllers.report import ReportController from ..models.common import Common _logger = logging.getLogger(__name__) class ZplReportController(ReportController): #------------------------------------------------------ # Report controllers #------------------------------------------------------ @http.route([ '/report//', '/report///', ], type='http', auth='user', website=True) def report_routes(self, reportname, docids=None, converter=None, **data): report = request.env['ir.actions.report'] context = dict(request.env.context) if docids: docids = [int(i) for i in docids.split(',')] if data.get('options'): data.update(json.loads(data.pop('options'))) if data.get('context'): data['context'] = json.loads(data['context']) context.update(data['context']) if converter == 'html': html = report.with_context(context)._render_qweb_html(reportname, docids, data=data)[0] return request.make_response(html) elif converter == 'pdf': pdf = report.with_context(context)._render_qweb_pdf(reportname, docids, data=data)[0] pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))] return request.make_response(pdf, headers=pdfhttpheaders) elif converter == 'text': text = report.with_context(context)._render_qweb_text(reportname, docids, data=data)[0] text_str = text.decode() Common.print_zpl(self, text_str) texthttpheaders = [('Content-Type', 'text/plain'), ('Content-Length', len(text))] return request.make_response(text, headers=texthttpheaders) else: raise werkzeug.exceptions.HTTPException(description='Converter %s not implemented.' % converter)