from oto import response from sqlalchemy.exc import SQLAlchemyError from masters_registry.connectors import mysql from masters_registry.constant import error from masters_registry.constant import field_const from masters_registry.models.sql import users def get_orchard_user_names(user_ids): """Return the full user name by user_id. Concatenate first name and last name of user. Args: user_ids (list): list of user_id for translation. Returns: dict: dict with user names and ids """ user_ids = { user_id: int(str(user_id).split(':')[-1]) for user_id in user_ids} try: if not user_ids: return response.create_error_response( code=error.USER_IDS_LIST_IS_EMPTY_CODE, message=error.USER_IDS_LIST_IS_EMPTY_MESSAGE, status=400 ) with mysql.mr_session_scope() as dbs: rows = dbs.execute( users.SELECT_USER_BY_ID, {field_const.USER_IDS: set(user_ids.values())}) result = dict() for row in rows: result[row[0]] = '{fname} {lname}'.format( fname=row[1], lname=row[2] ) user_names = { audit_table_user_id: result[user_id] for audit_table_user_id, user_id in user_ids.items() if result.get(user_id) is not None} return response.Response(message=user_names) except SQLAlchemyError as ex: return response.create_fatal_response(str(ex))