Hallo zusammen,
mir ist aufgefallen, dass bei der Nutzung der get_users
Funktion der ecmind-blue-client-manage
rein numerische Benutzernamen als Integer ausgelesen und zurückgegeben werden.
Diese Funktion wird u.a. von der Funktion get_user_groups_by_login
aufgerufen. Dort wird als Übergabeparameter allerdings ein String für den Benutzernamen erwartet get_user_groups_by_login(client: Client, login: str)
.
Somit kommt es in der Folge dazu, dass der Benutzer bzw. dessen Gruppen nicht ermittelt werden können.
Aus meiner Sicht ließe sich das Problem wie folgt beheben, indem man der to_dict
Methode recognize_numbers=False
mitgibt und bei "locked": True if user_entry["@locked"] == "1" else False
die „1“ als String prüft.
Optional könnte die id noch zu einem Integer gewandelt werden "id": int(user_entry["@id"])
.
def get_users(client: Client) -> dict:
user_list_result = client.execute(Job("mng.GetUserList", Flags=0))
if not user_list_result.return_code == 0:
raise RuntimeError(user_list_result.error_message)
xml_string = fix_encoding(user_list_result.values["UserList"])
users_element = XmlElement.from_string(xml_string).find("Users")
users_element.find("User").flag_as_list = True
result = {}
for user_entry in users_element.to_dict(recognize_numbers=False)["User"]:
result[user_entry["@benutzer"]] = {
"id": int(user_entry["@id"]),
"login": user_entry["@benutzer"],
"name": user_entry["@name"],
"guid": user_entry["@osguid"],
"mail": user_entry["@osemail"],
"locked": True if user_entry["@locked"] == "1" else False,
"profile": user_entry["@profil"],
}
return result
Wäre die Anpassung in dieser Form aus eurer Sicht möglich?
Viele Grüße
Benjamin