diff --git a/services/auth_services.py b/services/auth_services.py index b4e5e1d85c8c0a661a72e1aaf7af31b81944e1b1..9716ec11738cc6fe805e8cebbb7614f8c961ff28 100644 --- a/services/auth_services.py +++ b/services/auth_services.py @@ -2,11 +2,10 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import logging -import werkzeug - from datetime import datetime, timedelta import jwt +import werkzeug from odoo.addons.base_rest import restapi from odoo.addons.component.core import Component @@ -95,7 +94,8 @@ class AuthService(Component): if user: jwt_validator = self.env.ref("acc_rest_api.elo_validator").sudo() exp = datetime.now() + timedelta( - hours=(jwt_validator.token_expiration * 24)) + hours=(jwt_validator.token_expiration * 24) + ) payload = { "aud": jwt_validator.audience, "iss": jwt_validator.issuer, @@ -111,14 +111,16 @@ class AuthService(Component): ) datas = { # "user": user_datas, - "token": {"access_token": token, - "expiration_date": payload.get("exp")}, + "token": { + "access_token": token, + "expiration_date": payload.get("exp"), + }, } # send email to users with their signup url template = False if not template: - template = self.env.ref('acc_portal.acc_reset_password_email') - assert template._name == 'mail.template' + template = self.env.ref("acc_portal.acc_reset_password_email") + assert template._name == "mail.template" # template.sudo().write(template_values) try: @@ -126,26 +128,29 @@ class AuthService(Component): lang = user.lang query = dict(db=self.request.env.cr.dbname) - query['login'] = user.login - route = 'signup' + query["login"] = user.login + route = "signup" signup_url = "/%s?%s" % (route, werkzeug.urls.url_encode(query)) - signup_url = werkzeug.urls.url_join(user.company_id.url_app, signup_url) + signup_url = werkzeug.urls.url_join( + user.company_id.url_app, signup_url + ) user.partner_id.sudo().signup_prepare() template.sudo().with_context( - portal_url=signup_url, - lang=lang - ).send_mail( - user.id, - force_send=True, - raise_exception=True) + portal_url=signup_url, lang=lang + ).send_mail(user.id, force_send=True, raise_exception=True) except Exception as e: - datas['error'] = str(e) - _logger.info("Password reset email sent for user <%s> to <%s>", - user.login, user.email) + datas["error"] = str(e) + _logger.info( + "Password reset email sent for user <%s> to <%s>", + user.login, + user.email, + ) else: - datas['info'] = "Veuillez réinitialiser votre mot de passe: adresse email incorrecte" + datas[ + "info" + ] = "Veuillez réinitialiser votre mot de passe: adresse email incorrecte" return datas @restapi.method( @@ -195,9 +200,11 @@ class AuthService(Component): user = User.search([("login", "=", login)]) if user: if password == confirm_password: - user.write({'password': password}) + user.write({"password": password}) else: - datas['error'] = "Les mots de passe ne correspondent pas, veuillez les saisir à nouveau." + datas[ + "error" + ] = "Les mots de passe ne correspondent pas, veuillez les saisir à nouveau." return datas @restapi.method( @@ -229,7 +236,8 @@ class AuthService(Component): if password == confirm_password: jwt_validator = self.env.ref("acc_rest_api.elo_validator").sudo() exp = datetime.now() + timedelta( - hours=(jwt_validator.token_expiration * 24)) + hours=(jwt_validator.token_expiration * 24) + ) payload = { "aud": jwt_validator.audience, "iss": jwt_validator.issuer, @@ -245,12 +253,16 @@ class AuthService(Component): ) datas = { "user": user_datas, - "token": {"access_token": token, - "expiration_date": payload.get("exp")}, + "token": { + "access_token": token, + "expiration_date": payload.get("exp"), + }, } - user.write({'password': password}) + user.write({"password": password}) else: - datas["error"] = "Les mots de passe ne correspondent pas, veuillez les saisir à nouveau." + datas[ + "error" + ] = "Les mots de passe ne correspondent pas, veuillez les saisir à nouveau." datas["user"] = user_datas return datas @@ -427,6 +439,6 @@ class AuthService(Component): "access_token": {"type": "string", "nullable": True}, "expiration_date": {"type": "datetime", "nullable": True}, }, - "nullable": True + "nullable": True, }, } diff --git a/services/operation_services.py b/services/operation_services.py index eb6a710ccd89a61c4be01f4a629e36aeee3f7c57..e24b668d89fe4659a53c09c3c5f13eda13798f06 100644 --- a/services/operation_services.py +++ b/services/operation_services.py @@ -175,8 +175,8 @@ class OperationsService(Component): } if type == "invoice": # Récupération de toutes les factures liées à l'opération spécifiée - acc_account_ids = ( - self.env["acc.account"].search([("acc_operation_id", "=", _id)]) + acc_account_ids = self.env["acc.account"].search( + [("acc_operation_id", "=", _id)] ) datas["documents"] = [] @@ -192,9 +192,15 @@ class OperationsService(Component): datas["documents"].append(val) else: # Récupération de toutes les factures liées à l'opération spécifiée - acc_contract_ids = ( - self.env["acc.contract"].search([("acc_operation_id", "=", _id)]) - ) + domain = [("acc_operation_id", "=", _id)] + role = self._get_role(operation) + if role.get("isConsumer"): + domain += [("type", "=", "achat")] + if role.get("isProductor"): + domain += [("type", "=", "vente")] + if role.get("isPmo"): + domain += [("type", "!=", False)] + acc_contract_ids = self.env["acc.contract"].search(domain) datas["contracts"] = [] for n in acc_contract_ids: @@ -224,9 +230,9 @@ class OperationsService(Component): if invoice: invoice_sudo = invoice.with_user(SUPERUSER_ID).exists() - report_sudo = request.env.ref("acc_account.acc_account_invoices").with_user( - SUPERUSER_ID - ) + report_sudo = request.env.ref( + "acc_account.acc_account_invoices" + ).with_user(SUPERUSER_ID) pdf = report_sudo._render_qweb_pdf( [invoice_sudo.id], data={"report_type": "pdf"} @@ -237,7 +243,9 @@ class OperationsService(Component): ("Content-Length", len(pdf)), ] filename = "Facture.pdf" - reporthttpheaders.append(("Content-Disposition", content_disposition(filename))) + reporthttpheaders.append( + ("Content-Disposition", content_disposition(filename)) + ) return request.make_response(b64_pdf) else: contract_id = self.request.params.get("invoice_id", False) @@ -250,7 +258,8 @@ class OperationsService(Component): ] filename = "Contrat.pdf" reporthttpheaders.append( - ("Content-Disposition", content_disposition(filename))) + ("Content-Disposition", content_disposition(filename)) + ) return request.make_response(contract_sudo.document) @restapi.method(