我有一个用户列表,即 user_list=["用户1","用户2","用户3"] 我有一个名为搜索的功能,它可以搜索用户及其经理,然后搜索经理的经理,依此类推,直到到达没有任何经理的首席执行官级别。 最后我必须返回每个用户的经理和他们的经理。
user_list =["user1","user2","user3","user4","user5"]
def search(user):
user_details = ldap.search(user)
user_manager = user_details["manager"]
new_user = user_manager
list_of_user_managers.append(new_user)
if new_user["manager"] == "None":
return list_of_user_managers
else:
return search(new_user)
其中 user_details 具有以下数据。 user_details = {'ntid': 'tom', 'ldap_owner': 'roy', 'ldap_manager': 'noman', 'ldap_email': '[电子邮件受保护]'}
搜索后我期待这样的结果: 用户1层次结构:经理1,经理2,经理3,经理4 将 manager1 视为 user1 的 1 级经理,将 manager2 视为 manager1 的经理。 用户2层次结构:经理11,经理22,经理33,经理44 将 manager11 视为 user2 的一级经理,将 manager22 视为 manager11 的经理。
我需要重写上面的函数,以便它从用户列表中接受用户并且并行。
def ldap_search(user):
ldap_data = {
"user1": {'ntid': 'user1', 'ldap_owner': 'roy', 'ldap_manager': 'manager1', 'ldap_email': '[email protected]'},
"user2": {'ntid': 'user2', 'ldap_owner': 'roy', 'ldap_manager': 'manager11', 'ldap_email': '[email protected]'},
"user3": {'ntid': 'user3', 'ldap_owner': 'roy', 'ldap_manager': 'manager21', 'ldap_email': '[email protected]'},
"user4": {'ntid': 'user4', 'ldap_owner': 'roy', 'ldap_manager': 'manager31', 'ldap_email': '[email protected]'},
"user5": {'ntid': 'user5', 'ldap_owner': 'roy', 'ldap_manager': 'manager41', 'ldap_email': '[email protected]'},
"manager1": {'ntid': 'manager1', 'ldap_owner': 'roy', 'ldap_manager': 'manager2', 'ldap_email': '[email protected]'},
"manager2": {'ntid': 'manager2', 'ldap_owner': 'roy', 'ldap_manager': 'manager3', 'ldap_email': '[email protected]'},
"manager3": {'ntid': 'manager3', 'ldap_owner': 'roy', 'ldap_manager': 'manager4', 'ldap_email': '[email protected]'},
"manager4": {'ntid': 'manager4', 'ldap_owner': 'roy', 'ldap_manager': 'CEO', 'ldap_email': '[email protected]'},
"manager11": {'ntid': 'manager11', 'ldap_owner': 'roy', 'ldap_manager': 'manager22', 'ldap_email': '[email protected]'},
"manager22": {'ntid': 'manager22', 'ldap_owner': 'roy', 'ldap_manager': 'manager33', 'ldap_email': '[email protected]'},
"manager33": {'ntid': 'manager33', 'ldap_owner': 'roy', 'ldap_manager': 'manager44', 'ldap_email': '[email protected]'},
"manager44": {'ntid': 'manager44', 'ldap_owner': 'roy', 'ldap_manager': 'CEO', 'ldap_email': '[email protected]'},
"manager21": {'ntid': 'manager21', 'ldap_owner': 'roy', 'ldap_manager': 'manager31', 'ldap_email': '[email protected]'},
"manager31": {'ntid': 'manager31', 'ldap_owner': 'roy', 'ldap_manager': 'manager41', 'ldap_email': '[email protected]'},
"manager41": {'ntid': 'manager41', 'ldap_owner': 'roy', 'ldap_manager': 'CEO', 'ldap_email': '[email protected]'},
"CEO": {'ntid': 'CEO', 'ldap_owner': 'roy', 'ldap_manager': 'None', 'ldap_email': '[email protected]'}
}
return ldap_data.get(user, {})
def search(user):
user_details = ldap_search(user)
manager = user_details.get("ldap_manager")
if manager == None or manager == "CEO":
return [user]
else:
return [user] + search(manager)
def search_user_list(user_list):
result = []
for user in user_list:
managers = search(user)
result.append(managers)
return result
user_list = ["user1", "user2", "user3", "user4", "user5"]
ret = search_user_list(user_list)
print('\n'.join([str(i) for i in ret]))