async def leave_workspace(self, request, context): try: header_data = dict(context.invocation_metadata()) introspect_token = KeyCloakUtils.introspect_token( header_data['access_token']) client_id = introspect_token['sub'] user_info = User().get(client_id) lst_joined_group = GroupChat().get_joined(client_id) if len(lst_joined_group) > 0: for group in lst_joined_group: request_leave_group = group_pb2.LeaveGroupRequest( leave_member=group_pb2.MemberInfo( id=client_id, display_name=user_info.display_name, workspace_domain=get_owner_workspace_domain()), leave_member_by=group_pb2.MemberInfo( id=client_id, display_name=user_info.display_name, workspace_domain=get_owner_workspace_domain()), group_id=group.GroupChat.id) await GroupController().leave_group( request_leave_group, context) user_info.delete() KeyCloakUtils.delete_user(client_id) return workspace_pb2.BaseResponse() except Exception as e: logger.error(e) if not e.args or e.args[0] not in Message.msg_dict: errors = [ Message.get_error_object(Message.LEAVE_WORKSPACE_FAILED) ] else: errors = [Message.get_error_object(e.args[0])] context.set_details( json.dumps(errors, default=lambda x: x.__dict__)) context.set_code(grpc.StatusCode.INTERNAL)
async def destroy(request: Request, uid: str): user = User.get_or_none(id=uid) if user is None: return json({'Erro': 'Usuário não encontrado'}, status=404) User.delete().where(User.id == user.id).execute() return json(None, status=204)