import werkzeug

from odoo import http
from odoo.http import request


class Home(http.Controller):
    @http.route("/report/qr", type="http", auth="public")
    def report_qr(self, value, box_size=3, border=3, factory="png", **kwargs):
        try:
            barcode = request.env["ir.actions.report"].qr_generate(
                value, box_size=box_size, border=border, factory=factory, **kwargs
            )
        except (ValueError, AttributeError) as e:
            raise werkzeug.exceptions.HTTPException(
                description="Cannot convert into barcode."
            ) from e
        if factory != "png":
            return request.make_response(
                barcode, headers=[("Content-Type", "image/svg+xml")]
            )
        return request.make_response(barcode, headers=[("Content-Type", "image/png")])
