X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fuser.py;h=296bd556662ba41c1d0a68d59d1058a2435609a0;hb=refs%2Fchanges%2F93%2F13593%2F1;hp=d94b9c472ea63769c2a81d142ef45a064a4d590b;hpb=df7452bc42c9ad62f6a0923c0c3eb42a3bc3a331;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/user.py b/osmclient/sol005/user.py index d94b9c4..296bd55 100644 --- a/osmclient/sol005/user.py +++ b/osmclient/sol005/user.py @@ -84,13 +84,13 @@ class User(object): # msg = resp # raise ClientException("failed to create user {} - {}".format(name, msg)) - def update(self, name, user, pwd_change=None): + def update(self, name, user, pwd_change=False): """Updates an existing OSM user identified by name""" self._logger.debug("") if pwd_change: - self._client.get_token(pwd_change) + token_info = self._client.get_token(pwd_change) else: - self._client.get_token() + token_info = self._client.get_token() # print(user) myuser = self.get(name) update_user = { @@ -98,15 +98,12 @@ class User(object): "remove_project_role_mappings": [], } - if not user.get("change_password"): - # if password is defined, update the password - if user.get("password"): - update_user["password"] = user["password"] - if user.get("username"): - update_user["username"] = user["username"] - else: - update_user["old_password"] = user["change_password"] + if user.get("username"): + update_user["username"] = user["username"] + if user.get("new_password"): update_user["password"] = user["new_password"] + if pwd_change and user.get("current_password"): + update_user["old_password"] = user["current_password"] if user.get("set-project"): # Remove project and insert project role mapping @@ -151,6 +148,28 @@ class User(object): mapping = {"project": project, "role": role} update_user["remove_project_role_mappings"].append(mapping) + if user.get("unlock"): + if token_info.get("admin_show"): + update_user["unlock"] = user["unlock"] + update_user["system_admin_id"] = token_info.get("user_id") + else: + raise ClientException( + "{} does not have privilege to unlock {}".format( + token_info.get("username"), myuser.get("username") + ) + ) + + if user.get("renew"): + if token_info.get("admin_show"): + update_user["renew"] = user["renew"] + update_user["system_admin_id"] = token_info.get("user_id") + else: + raise ClientException( + "{} does not have privilege to renew {}".format( + token_info.get("username"), myuser.get("username") + ) + ) + if not update_user["remove_project_role_mappings"]: del update_user["remove_project_role_mappings"] if not update_user["add_project_role_mappings"]: @@ -216,7 +235,11 @@ class User(object): def list(self, filter=None): """Returns the list of OSM users""" self._logger.debug("") - self._client.get_token() + response = self._client.get_token() + admin_show = None + if response: + admin_show = response.get("admin_show") + filter_string = "" if filter: filter_string = "?{}".format(filter) @@ -224,7 +247,9 @@ class User(object): "{}{}".format(self._apiBase, filter_string), skip_query_admin=True ) # print('RESP: {}'.format(resp)) - if resp: + if resp and response: + return json.loads(resp), admin_show + elif resp: return json.loads(resp) return list()