Skip to content
Extraits de code Groupes Projets
Valider f7d38e88 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[IMP] use 401 error instead of empty dict

parent 4145506e
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2021- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
import werkzeug
from werkzeug.exceptions import Unauthorized
from odoo import http
from odoo import _, http
from odoo.exceptions import AccessError
from odoo.http import request
from odoo.addons.oacc_portal.controllers.main import CustomerPortal as CustomerPortal
......@@ -172,13 +172,18 @@ class CustomerPortal(CustomerPortal):
- When click on date range
"""
operation = request.env["acc.operation"].browse(operation_id)
try:
roles = self._get_role(operation)
# Si l'opération n'a pas de courbes on renvoie un dictionnaire vide
except AccessError as e:
raise werkzeug.exceptions.abort(
werkzeug.wrappers.Response(status=401)
) from e
# Si l'opération n'a pas de courbes on renvoie une erreur 401
# Si l'utilisateur n'est pas soit superAdmin, soit Admin, soit Pmo,
# 1. si prm_id est passé il doit aussi y avoir un partner_id
# 2. il faut vérifier qu'il est bien autorisé à accéder au partner_id
# si passé en paramètre
# sinon on renvoie un dictionnaire vide
# sinon on renvoie une erreur 401
# (on ne vérifie pas qu'il ait bien accès au prm, aucune donnée ne sera renvoyée
# si les courbes du prm demandées n'appartiennent pas à ce partner)
if not roles.get("isDataCdc") or (
......@@ -194,7 +199,7 @@ class CustomerPortal(CustomerPortal):
)
)
):
return {}
raise werkzeug.exceptions.abort(werkzeug.wrappers.Response(status=401))
vals = operation.get_graph(
start_date, end_date, partner_id, prm_id, data_type, graph_type
)
......@@ -224,19 +229,25 @@ class CustomerPortal(CustomerPortal):
- When click on button export
"""
operation = request.env["acc.operation"].sudo().browse(int(operation_id))
try:
if (
request.env.user.commercial_partner_id.id
not in operation.partner_role_ids.partner_id.ids
):
raise Unauthorized()
raise AccessError(_("You are not allowed to access this operation"))
roles = self._get_role(operation)
# Si l'opération n'a pas de courbes on renvoie un Unauthorized
except AccessError as e:
raise werkzeug.exceptions.abort(
werkzeug.wrappers.Response(status=401)
) from e
# Si l'opération n'a pas de courbes on renvoie une erreur 401
# Si l'utilisateur n'est pas soit superAdmin, soit Admin, soit Pmo,
# 1. le partner_id est obligatoire
# 2. il faut vérifier qu'il est bien autorisé à accéder au partner_id
# 3. il faut vérifier que le PRM correspond bien à une période de ce partner_id
# sur l'opération
# sinon on renvoie un Unauthorized
# sinon on renvoie une erreur 401
# (on ne vérifie pas qu'il ait bien accès au prm, aucune donnée ne sera renvoyée
# si les courbes du prm demandées n'appartiennent pas à ce partner)
if not roles.get("isDataCdc") or (
......@@ -264,7 +275,8 @@ class CustomerPortal(CustomerPortal):
)
)
):
raise Unauthorized()
raise werkzeug.exceptions.abort(werkzeug.wrappers.Response(status=401))
file_values = operation._export_cdc(
start_date, end_date, partner_id, prm_id, data_type
)
......
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