#!/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 dm.common.objects.userSystemRole import UserSystemRole 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 addUserSystemRole(self, username, roleName, experimentStationName=None): if not username: raise InvalidRequest('Username must be provided.') if not roleName: raise InvalidRequest('Role name must be provided.') url = '%s/userSystemRoles/%s/%s' % (self.getContextRoot(), username, roleName) if experimentStationName: url += '?experimentStationName=%s' % (experimentStationName) responseData = self.sendSessionRequest(url=url, method='POST') return UserSystemRole(responseData) @DsRestApi.execute def deleteUserSystemRole(self, username, roleName, experimentStationName=None): if not username: raise InvalidRequest('Username must be provided.') if not roleName: raise InvalidRequest('Role name must be provided.') url = '%s/userSystemRoles/%s/%s' % (self.getContextRoot(), username, roleName) if experimentStationName: url += '?experimentStationName=%s' % (experimentStationName) responseData = self.sendSessionRequest(url=url, method='DELETE') return UserSystemRole(responseData) @DsRestApi.execute def addUserExperimentRole(self, username, roleName, experimentName): 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/userExperimentRoles/%s/%s/%s' % (self.getContextRoot(), username, roleName, experimentName) responseData = self.sendSessionRequest(url=url, method='POST') return UserExperimentRole(responseData) @DsRestApi.execute def deleteUserExperimentRole(self, username, roleName, experimentName): 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/userExperimentRoles/%s/%s/%s' % (self.getContextRoot(), username, roleName, experimentName) responseData = self.sendSessionRequest(url=url, method='DELETE') return UserExperimentRole(responseData) ####################################################################### # Testing. if __name__ == '__main__': pass