Fix pylint issues appeared with version 3.2.2 of pylint
[osm/osmclient.git] / osmclient / sol005 / user.py
index 917fb1a..296bd55 100644 (file)
@@ -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,20 +98,16 @@ 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
             for set_project in user["set-project"]:
-
                 set_project_clean = [m.strip() for m in set_project.split(",")]
                 project, roles = set_project_clean[0], set_project_clean[1:]
 
@@ -152,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"]:
@@ -217,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)
@@ -225,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()