Newer
Older
#!/usr/bin/env python
import cherrypy
from dm.common.service.dmSessionController import DmSessionController
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.utility.encoder import Encoder
from dm.daq_web_service.service.impl.experimentSessionControllerImpl import ExperimentSessionControllerImpl
class ExperimentSessionController(DmSessionController):
def __init__(self):
DmSessionController.__init__(self)
self.experimentSessionControllerImpl = ExperimentSessionControllerImpl()
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def startDaq(self, **kwargs):
experimentName = kwargs.get('experimentName')
if experimentName is None or not len(experimentName):
raise InvalidRequest('Missing experiment name.')
Barbara B. Frosik
committed
experimentName = Encoder.decode(experimentName)
dataDirectory = kwargs.get('dataDirectory')
if dataDirectory is None or not len(dataDirectory):
raise InvalidRequest('Missing data directory.')
Barbara B. Frosik
committed
dataDirectory = Encoder.decode(dataDirectory)
daqInfo = kwargs.get('daqInfo')
if daqInfo is not None:
daqInfo = Encoder.decode(daqInfo)
response = self.experimentSessionControllerImpl.startDaq(experimentName, dataDirectory, daqInfo).getFullJsonRep()
self.logger.debug('Returning: %s' % response)
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def stopDaq(self, **kwargs):
experimentName = kwargs.get('experimentName')
if not experimentName:
raise InvalidRequest('Missing experiment name.')
experimentName = Encoder.decode(experimentName)
response = self.experimentSessionControllerImpl.stopDaq(experimentName).getFullJsonRep()
self.logger.debug('Returning: %s' % response)
return response
@DmSessionController.require(DmSessionController.isAdministrator())
encodedDaqInfo = kwargs.get('daqInfo')
if not encodedDaqInfo:
raise InvalidRequest('Invalid DAQ info provided.')
daqInfo = json.loads(Encoder.decode(encodedDaqInfo))
if not daqInfo.has_key('experimentName'):
raise InvalidRequest('Experiment name is missing.')
if not daqInfo.has_key('dataDirectory'):
raise InvalidRequest('Data directory is missing.')
response = self.experimentSessionControllerImpl.upload(daqInfo).getFullJsonRep()
self.logger.debug('Returning: %s' % response)
return response