Skip to content
Extraits de code Groupes Projets
Valider 6dc00789 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[fix] error contract download

parent 5a3a40bc
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2021 Le Filament (<http://www.le-filament.com>) # Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import base64
from odoo import SUPERUSER_ID, _, http from odoo import SUPERUSER_ID, _, http
from odoo.exceptions import AccessError, MissingError from odoo.exceptions import AccessError, MissingError
from odoo.http import request from odoo.http import Response, request
from odoo.tools import consteq from odoo.tools import consteq
from odoo.addons.portal.controllers.portal import CustomerPortal from odoo.addons.portal.controllers.portal import CustomerPortal
...@@ -36,7 +37,9 @@ class AccAccountMain(CustomerPortal): ...@@ -36,7 +37,9 @@ class AccAccountMain(CustomerPortal):
download=False, download=False,
) )
else: else:
raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document")) return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
@http.route( @http.route(
["/contract/<int:contract_id>"], ["/contract/<int:contract_id>"],
...@@ -49,17 +52,33 @@ class AccAccountMain(CustomerPortal): ...@@ -49,17 +52,33 @@ class AccAccountMain(CustomerPortal):
def print_contract(self, contract_id, access_token=None, **kw): def print_contract(self, contract_id, access_token=None, **kw):
contract = request.env["acc.contract"].browse([contract_id]) contract = request.env["acc.contract"].browse([contract_id])
contract_sudo = contract.with_user(SUPERUSER_ID).exists() contract_sudo = contract.with_user(SUPERUSER_ID).exists()
if not contract_sudo:
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
if ( if (
not access_token not access_token
or not contract_sudo.access_token or not contract_sudo.access_token
or not consteq(contract_sudo.access_token, access_token) or not consteq(contract_sudo.access_token, access_token)
): ):
raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document")) return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
else: else:
content_base64 = contract_sudo.document status, headers, content_base64 = (
headers = [ request.env["ir.http"]
("Content-Type", "application/pdf"), .sudo()
("Content-Length", len(content_base64)), .binary_content(
] model="acc.contract",
id=contract_sudo.id,
field="document",
default_mimetype="application/pdf",
download=False,
)
)
content = base64.b64decode(content_base64)
headers = http.set_safe_image_headers(headers, content)
response = request.make_response(content, headers)
response.status_code = status
request.make_response(content_base64, headers=headers) return response
...@@ -141,7 +141,8 @@ class AccAccount(models.Model): ...@@ -141,7 +141,8 @@ class AccAccount(models.Model):
move.access_url = "/invoice/%s" % (move.id) move.access_url = "/invoice/%s" % (move.id)
def _get_report_base_filename(self): def _get_report_base_filename(self):
return "Facture" self.ensure_one()
return "Facture %s" % (self.name,)
@api.depends( @api.depends(
"line_ids", "line_ids",
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter