added more information about user batch creation
This commit is contained in:
parent
310b7ed8ff
commit
80ba5da9c8
1 changed files with 34 additions and 9 deletions
|
@ -5,6 +5,8 @@ from helpers import KratosApi
|
||||||
|
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
|
|
||||||
|
from helpers.error_handler import KratosError
|
||||||
|
|
||||||
|
|
||||||
class UserService:
|
class UserService:
|
||||||
no_access_role_id = 3
|
no_access_role_id = 3
|
||||||
|
@ -101,21 +103,44 @@ class UserService:
|
||||||
# for every item in array call Kratos - check if there can be batch create on Kratos
|
# for every item in array call Kratos - check if there can be batch create on Kratos
|
||||||
# - if yes, what happens with the batch if there is at least one existing email
|
# - if yes, what happens with the batch if there is at least one existing email
|
||||||
created_users = []
|
created_users = []
|
||||||
not_created_users = []
|
existing_users = []
|
||||||
|
creation_failed_users = []
|
||||||
|
|
||||||
for user_data in data['users']:
|
for user_data in data['users']:
|
||||||
user_mail = user_data["email"]
|
user_email = user_data["email"]
|
||||||
if not user_mail:
|
if not user_email:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
user = UserService.post_user(user_data)
|
UserService.post_user(user_data)
|
||||||
current_app.logger.info(f"Batch create user: {user_mail}")
|
current_app.logger.info(f"Batch create user: {user_email}")
|
||||||
created_users.append(user)
|
created_users.append(user_email)
|
||||||
|
except KratosError as err:
|
||||||
|
status_code = err.args[1]
|
||||||
|
if status_code == 409:
|
||||||
|
existing_users.append(user_email)
|
||||||
|
elif status_code == 400:
|
||||||
|
creation_failed_users.append(user_email)
|
||||||
|
current_app.logger.error(
|
||||||
|
f"Exception calling Kratos: {err} on creating user: {user_email} {status_code}")
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
current_app.logger.error(f"Exception calling Kratos: {error} on creating user: {user_mail}")
|
current_app.logger.error(
|
||||||
not_created_users.append(user_mail)
|
f"Exception: {error} on creating user: {user_email}")
|
||||||
|
creation_failed_users.append(user_email)
|
||||||
|
|
||||||
return {"created_users": created_users, "not_created_users": not_created_users}
|
success_response = {}
|
||||||
|
existing_response = {}
|
||||||
|
failed_response = {}
|
||||||
|
if created_users:
|
||||||
|
success_response = {"users": created_users,
|
||||||
|
"message": f"{len(created_users)} users created"}
|
||||||
|
if existing_users:
|
||||||
|
existing_response = {
|
||||||
|
"users": existing_users, "message": f"{len(existing_users)} users already exist: {', '.join(existing_users)}"}
|
||||||
|
if creation_failed_users:
|
||||||
|
failed_response = {"users": creation_failed_users,
|
||||||
|
"message": f"{len(creation_failed_users)} users failed to create: {', '.join(creation_failed_users)}"}
|
||||||
|
|
||||||
|
return {"success": success_response, "existing": existing_response, "failed": failed_response}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __insertAppRoleToUser(userId, userRes):
|
def __insertAppRoleToUser(userId, userRes):
|
||||||
|
|
Loading…
Reference in a new issue