Feature 10909: Heal operation for VDU
[osm/osmclient.git] / osmclient / sol005 / user.py
index d6c1e16..917fb1a 100644 (file)
@@ -84,10 +84,13 @@ class User(object):
         #            msg = resp
         #    raise ClientException("failed to create user {} - {}".format(name, msg))
 
-    def update(self, name, user):
+    def update(self, name, user, pwd_change=None):
         """Updates an existing OSM user identified by name"""
         self._logger.debug("")
-        self._client.get_token()
+        if pwd_change:
+            self._client.get_token(pwd_change)
+        else:
+            self._client.get_token()
         # print(user)
         myuser = self.get(name)
         update_user = {
@@ -95,13 +98,17 @@ class User(object):
             "remove_project_role_mappings": [],
         }
 
-        # if password is defined, update the password
-        if user["password"]:
-            update_user["password"] = user["password"]
-        if user["username"]:
-            update_user["username"] = user["username"]
+        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"]
+            update_user["password"] = user["new_password"]
 
-        if user["set-project"]:
+        if user.get("set-project"):
             # Remove project and insert project role mapping
             for set_project in user["set-project"]:
 
@@ -114,13 +121,13 @@ class User(object):
                     mapping = {"project": project, "role": role}
                     update_user["add_project_role_mappings"].append(mapping)
 
-        if user["remove-project"]:
+        if user.get("remove-project"):
             for remove_project in user["remove-project"]:
                 update_user["remove_project_role_mappings"].append(
                     {"project": remove_project}
                 )
 
-        if user["add-project-role"]:
+        if user.get("add-project-role"):
             for add_project_role in user["add-project-role"]:
                 add_project_role_clean = [
                     m.strip() for m in add_project_role.split(",")
@@ -131,7 +138,7 @@ class User(object):
                     mapping = {"project": project, "role": role}
                     update_user["add_project_role_mappings"].append(mapping)
 
-        if user["remove-project-role"]:
+        if user.get("remove-project-role"):
             for remove_project_role in user["remove-project-role"]:
                 remove_project_role_clean = [
                     m.strip() for m in remove_project_role.split(",")