from selvpcclient import base
from selvpcclient.resources.roles import RolesManager
[docs]class User(base.Resource):
"""Represents a user."""
[docs] def get_roles(self):
"""List roles for current user.
:rtype: list of :class:`selvpcclient.resources.roles.Role`
"""
return self.manager.roles_manager.get_user_roles(self.id)
[docs] def update_name(self, new_name):
"""Update name for current user.
:param string new_name: New user name.
:rtype: :class:`User`
"""
return self.manager.update(self.id, name=new_name)
[docs] def update_password(self, new_password):
"""Update password for current user.
:param string new_password: New user password.
:rtype: :class:`User`
"""
return self.manager.update(self.id, password=new_password)
[docs] def update_status(self, enabled):
"""Update status (enabled|disabled) for current user.
:param bool enabled: New user status: enabled or disabled.
:rtype: :class:`User`
"""
return self.manager.update(self.id, enabled=enabled)
[docs] def add_to_project(self, project_id):
"""Add current user to project.
:param str project_id: Project id, where user will be added.
:rtype: :class:`selvpcclient.resources.roles.Role`
"""
return self.manager.roles_manager.add_user_role_in_project(
project_id=project_id, user_id=self.id)
[docs] def remove_from_project(self, project_id):
"""Remove current user from project.
:param str project_id: Project id, where user will be removed.
:rtype: None
"""
self.manager.roles_manager.delete_user_role_from_project(
project_id=project_id, user_id=self.id)
[docs] def check_in_project(self, project_id):
"""Check if the current user is have a role in project.
:param str project_id: Project id, where user will be checked.
:rtype: bool
"""
roles = self.manager.roles_manager.get_user_roles(self.id)
for role in roles:
if role.project_id == project_id:
return True
return False
[docs] def delete(self):
"""Delete current user"""
return self.manager.delete(self.id)
[docs]class UsersManager(base.Manager):
"""Manager class for manipulating users."""
resource_class = User
def __init__(self, client):
super(UsersManager, self).__init__(client)
self.roles_manager = RolesManager(client)
[docs] def list(self):
"""Get list of all users in current domain.
:rtype: list of :class:`User`
"""
return self._list('/users', 'users')
[docs] def create(self, name, password, enabled):
"""Create new user in current domain.
:param string name: User name.
:param string password: User password.
:param bool enabled: User status.
:rtype: :class:`User`
"""
body = {
"user": {
"name": name,
"password": password,
"enabled": str(enabled).lower() in ['true', '1']
}
}
return self._post('/users', body, 'user')
[docs] def update(self, user_id, name=None, password=None, enabled=None):
"""Edit user parameters.
:param string user_id: User id.
:param string name: New user name. (optional)
:param string password: New user password. (optional)
:param bool enabled: New user status. (optional)
:rtype: :class:`User`
"""
body = {"user": {}}
if name:
body["user"]["name"] = name
if password:
body["user"]["password"] = password
if enabled is not None:
body["user"]["enabled"] = str(enabled).lower() in ['true', '1']
return self._patch('/users/{}'.format(user_id), body, 'user')
[docs] def delete(self, user_id):
"""Delete user and it's roles from domain.
:param string user_id: User id.
:rtype: None
"""
self._delete('/users/{}'.format(user_id))