From b30b158917607cda7792843418d40fea4a84fc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Thu, 17 Jul 2025 12:25:54 -0300 Subject: [PATCH] update user --- konviva-events/app/events/create_user.py | 2 +- konviva-events/app/events/enroll.py | 16 +++++++++++++ konviva-events/app/konviva.py | 25 ++++++++++++++++++++ konviva-events/tests/test_konviva.py | 29 ++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) diff --git a/konviva-events/app/events/create_user.py b/konviva-events/app/events/create_user.py index e62842e..7fb7972 100644 --- a/konviva-events/app/events/create_user.py +++ b/konviva-events/app/events/create_user.py @@ -32,7 +32,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: email=new_image['email'], cpf=new_image.get('cpf', None), ) - except konviva.EmailAlreadyExists as exc: + except konviva.EmailAlreadyExistsError as exc: logger.exception(exc, email=new_image['email']) r = konviva.get_users_by_email(new_image['email']) diff --git a/konviva-events/app/events/enroll.py b/konviva-events/app/events/enroll.py index e69de29..f85ea2f 100644 --- a/konviva-events/app/events/enroll.py +++ b/konviva-events/app/events/enroll.py @@ -0,0 +1,16 @@ +from aws_lambda_powertools import Logger +from aws_lambda_powertools.utilities.data_classes import ( + EventBridgeEvent, + event_source, +) +from aws_lambda_powertools.utilities.typing import LambdaContext + +logger = Logger(__name__) + + +@event_source(data_class=EventBridgeEvent) +@logger.inject_lambda_context +def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: + new_image = event.detail['new_image'] + + return True diff --git a/konviva-events/app/konviva.py b/konviva-events/app/konviva.py index d906ce4..addc2a5 100644 --- a/konviva-events/app/konviva.py +++ b/konviva-events/app/konviva.py @@ -8,6 +8,7 @@ from layercake.strutils import random_str from config import KONVIVA_API_URL, KONVIVA_SECRET_KEY +ADM = 1 ALU = 2 GES = 3 @@ -80,6 +81,30 @@ def create_user( return r.json().get('IDUsuario') +def update_user(id: str, **kwargs) -> dict: + url = urlparse(KONVIVA_API_URL)._replace( + path='/action/api/integrarUsuario', + query='sendMail=false', + ) + + r = requests.put( + url=url.geturl(), + headers=headers, + json={ + 'IDUsuario': int(id), + **kwargs, + }, + ) + r.raise_for_status() + + # Because Konviva does not return the proper HTTP status code + if err := glom(r.json(), 'errors', default=None): + err = err[0] if isinstance(err, list) else err + raise KonvivaError(err) + + return r.json() + + def get_users_by_email(email: str) -> list[dict]: url = urlparse(KONVIVA_API_URL)._replace( path='/action/api/getUsuariosByQuery', diff --git a/konviva-events/tests/test_konviva.py b/konviva-events/tests/test_konviva.py index 0bde35c..a3b13ec 100644 --- a/konviva-events/tests/test_konviva.py +++ b/konviva-events/tests/test_konviva.py @@ -21,3 +21,32 @@ def test_get_users_by_email(): def test_get_users_by_email_notfound(): r = konviva.get_users_by_email('fake@fake.com') assert r == [] + + +def test_update_user(): + r = konviva.update_user( + id='26943', + UnidadesPerfil=[ + { + 'IDPerfil': konviva.ADM, + 'CODPerfil': 'ADM', + 'CODUnidade': 'cJtK9SsnJhKPyxESe7g3DG', + }, + { + 'IDPerfil': konviva.ALU, + 'CODPerfil': 'ALU', + 'CODUnidade': 'cJtK9SsnJhKPyxESe7g3DG', + }, + ], + CODPerfilFavorito='ADM', + ) + + assert r['message'] == 'Usuário atualizado' + + with pytest.raises(konviva.KonvivaError) as exc: + r = konviva.update_user( + id='26943', + CODPerfilFavorito='GES', + ) + + assert str(exc.value) == 'Perfil não encontrado'