Forked from
DM / dm-docs
261 commits behind, 496 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
userRestApi.py 2.71 KiB
#!/usr/bin/env python
import os
import urllib
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.userInfo import UserInfo
from dm.common.objects.userExperimentRole import UserExperimentRole
from dsRestApi import DsRestApi
class UserRestApi(DsRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
DsRestApi.__init__(self, username, password, host, port, protocol)
@DsRestApi.execute
def getUsers(self):
url = '%s/users' % (self.getContextRoot())
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, UserInfo)
@DsRestApi.execute
def getUserById(self, id):
if id is None:
raise InvalidRequest('User id must be provided.')
url = '%s/users/%s' % (self.getContextRoot(), id)
responseData = self.sendSessionRequest(url=url, method='GET')
return UserInfo(responseData)
@DsRestApi.execute
def getUserByUsername(self, username):
if username is None:
raise InvalidRequest('Username must be provided.')
url = '%s/usersByUsername/%s' % (self.getContextRoot(), username)
responseData = self.sendSessionRequest(url=url, method='GET')
return UserInfo(responseData)
@DsRestApi.execute
def addUserExperimentRole(self, username, experimentName, roleName):
if not username:
raise InvalidRequest('Username must be provided.')
if not experimentName:
raise InvalidRequest('Experiment name must be provided.')
if not roleName:
raise InvalidRequest('Role name must be provided.')
url = '%s/usersByExperiment/%s/%s/%s' % (self.getContextRoot(), username, experimentName, roleName)
responseData = self.sendSessionRequest(url=url, method='POST')
return UserExperimentRole(responseData)
@DsRestApi.execute
def deleteUserExperimentRole(self, username, experimentName, roleName):
if not username:
raise InvalidRequest('Username must be provided.')
if not experimentName:
raise InvalidRequest('Experiment name must be provided.')
if not roleName:
raise InvalidRequest('Role name must be provided.')
url = '%s/usersByExperiment/%s/%s/%s' % (self.getContextRoot(), username, experimentName, roleName)
responseData = self.sendSessionRequest(url=url, method='DELETE')
return UserExperimentRole(responseData)
#######################################################################
# Testing.
if __name__ == '__main__':
pass