Skip to content
Snippets Groups Projects
Commit d1cdc515 authored by sveseli's avatar sveseli
Browse files

added DB and DS web service interfaces for deleting user experiment role;...

added DB and DS web service interfaces for deleting user experiment role; added new delete-user-experiment-role command
parent 5a5599ba
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
# Run command
if [ -z $DM_ROOT_DIR ]; then
cd `dirname $0` && myDir=`pwd`
setupFile=$myDir/../setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile > /dev/null
fi
$DM_ROOT_DIR/src/python/dm/ds_web_service/cli/deleteUserExperimentRoleCli.py $@
#!/bin/sh
# Run command
if [ -z $DM_ROOT_DIR ]; then
cd `dirname $0` && myDir=`pwd`
setupFile=$myDir/../setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile > /dev/null
fi
$DM_ROOT_DIR/src/python/dm/ds_web_service/cli/updateExperimentCli.py $@
......@@ -49,6 +49,18 @@ class UserRestApi(DsRestApi):
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.
......
#!/usr/bin/env python
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.ds_web_service.api.userRestApi import UserRestApi
from dsWebServiceSessionCli import DsWebServiceSessionCli
class DeleteUserExperimentRoleCli(DsWebServiceSessionCli):
def __init__(self):
DsWebServiceSessionCli.__init__(self)
self.addOption('', '--username', dest='username', help='User username.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
self.addOption('', '--role', dest='roleName', help='Role name.')
def checkArgs(self):
if not self.options.username:
raise InvalidRequest('Username must be provided.')
if not self.options.experimentName:
raise InvalidRequest('Experiment name must be provided.')
if not self.options.roleName:
raise InvalidRequest('Role name must be provided.')
def getUsername(self):
return self.options.username
def getExperimentName(self):
return self.options.experimentName
def getRoleName(self):
return self.options.roleName
def runCommand(self):
self.parseArgs(usage="""
dm-delete-user-experiment-role --username=USERNAME
--experiment=EXPERIMENTNAME --role=ROLENAME
Description:
Deletes experiment role from the given user.
""")
self.checkArgs()
api = UserRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
userExperimentRole = api.deleteUserExperimentRole(self.getUsername(), self.getExperimentName(), self.getRoleName())
#print 'Deleted User Experiment Role:\n\t%s' % userExperimentRole.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = DeleteUserExperimentRoleCli()
cli.run()
......@@ -83,6 +83,13 @@ class ExperimentManager(Singleton):
if os.path.exists(storageDirectory):
self.platformUtility.addUserToGroup(username, experimentName)
def deleteUserFromGroup(self, username, experimentName):
experiment = self.experimentDbApi.getExperimentWithUsers(experimentName)
storageDirectory = self.__getExperimentStorageDataDirectory(experiment)
if os.path.exists(storageDirectory):
experimentUsers = experiment.get('experimentUsernameList', [])
self.platformUtility.setGroupUsers(experimentName, experimentUsers)
def createExperimentGroup(self, experiment):
experimentName = experiment.get('name')
storageDirectory = experiment.get('storageDirectory')
......@@ -98,8 +105,6 @@ class ExperimentManager(Singleton):
experimentUsers = experiment.get('experimentUsernameList', [])
self.logger.debug('Found experiment users: %s', experimentUsers)
self.platformUtility.setGroupUsers(experimentName, experimentUsers)
#for username in experimentUsers:
# self.platformUtility.addUserToGroup(username, experimentName)
def updateExperimentGroupUsers(self, experiment):
experimentName = experiment.get('name')
......
......@@ -30,3 +30,8 @@ class UserInfoSessionControllerImpl(DmObjectManager):
ExperimentManager.getInstance().addUserToGroup(username, experimentName)
return userInfo
def deleteUserExperimentRole(self, username, experimentName, roleName):
userInfo = self.userDbApi.deleteUserExperimentRole(username, experimentName, roleName)
ExperimentManager.getInstance().deleteUserFromGroup(username, experimentName)
return userInfo
......@@ -49,3 +49,16 @@ class UserInfoSessionController(DmSessionController):
response = self.userInfoSessionControllerImpl.addUserExperimentRole(username, experimentName, roleName).getFullJsonRep()
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def deleteUserExperimentRole(self, username, experimentName, roleName, **kwargs):
if not username:
raise InvalidRequest('Invalid username provided.')
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not roleName:
raise InvalidRequest('Invalid role name provided.')
response = self.userInfoSessionControllerImpl.deleteUserExperimentRole(username, experimentName, roleName).getFullJsonRep()
return response
......@@ -55,6 +55,14 @@ class UserRouteDescriptor:
'method' : ['POST']
},
# Delete user experiment role
{
'name' : 'deleteUserExperimentRole',
'path' : '%s/usersByExperiment/:(username)/:(experimentName)/:(roleName)' % contextRoot,
'controller' : userInfoSessionController,
'action' : 'deleteUserExperimentRole',
'method' : ['DELETE']
},
]
return routes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment