Forked from
DM / dm-docs
261 commits behind, 493 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
datasetSessionController.py 5.51 KiB
#!/usr/bin/env python
import cherrypy
import json
from dm.common.utility.encoder import Encoder
from dm.common.service.dmSessionController import DmSessionController
from dm.cat_web_service.service.impl.datasetSessionControllerImpl import DatasetSessionControllerImpl
class DatasetSessionController(DmSessionController):
def __init__(self):
DmSessionController.__init__(self)
self.datasetSessionControllerImpl = DatasetSessionControllerImpl()
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def addExperimentDataset(self, experimentName, datasetName, **kwargs):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
encodedDatasetInfo = kwargs.get('datasetInfo')
if not encodedDatasetInfo:
raise InvalidRequest('Invalid dataset info provided.')
datasetInfo = json.loads(Encoder.decode(encodedDatasetInfo))
datasetInfo['datasetName'] = datasetName
datasetInfo['experimentName'] = experimentName
response = self.datasetSessionControllerImpl.addExperimentDataset(datasetInfo).getFullJsonRep()
self.logger.debug('Added dataset %s: %s' % (datasetName,response))
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def updateExperimentDataset(self, experimentName, datasetName, **kwargs):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
encodedDatasetInfo = kwargs.get('datasetInfo')
if not encodedDatasetInfo:
raise InvalidRequest('Invalid dataset info provided.')
datasetInfo = json.loads(Encoder.decode(encodedDatasetInfo))
datasetInfo['datasetName'] = datasetName
datasetInfo['experimentName'] = experimentName
response = self.datasetSessionControllerImpl.updateExperimentDataset(datasetInfo).getFullJsonRep()
self.logger.debug('Updated dataset %s: %s' % (datasetName,response))
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def updateDatasetById(self, id, **kwargs):
if not id:
raise InvalidRequest('Invalid dataset id provided.')
encodedDatasetInfo = kwargs.get('datasetInfo')
if not encodedDatasetInfo:
raise InvalidRequest('Invalid dataset info provided.')
datasetInfo = json.loads(Encoder.decode(encodedDatasetInfo))
response = self.datasetSessionControllerImpl.updateDatasetById(datasetInfo).getFullJsonRep()
self.logger.debug('Updated dataset id %s: %s' % (id,response))
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def getDatasets(self, **kwargs):
encodedQueryDict = kwargs.get('queryDict')
queryDict = {}
if encodedQueryDict:
queryDict = json.loads(Encoder.decode(encodedQueryDict))
return self.listToJson(self.datasetSessionControllerImpl.getDatasets(queryDict=queryDict))
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def getExperimentDatasets(self, experimentName, **kwargs):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
encodedQueryDict = kwargs.get('queryDict')
queryDict = {}
if encodedQueryDict:
queryDict = json.loads(Encoder.decode(encodedQueryDict))
return self.listToJson(self.datasetSessionControllerImpl.getExperimentDatasets(experimentName, queryDict=queryDict))
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def getDatasetById(self, id, **kwargs):
if not id:
raise InvalidRequest('Invalid id provided.')
response = self.datasetSessionControllerImpl.getDatasetById(id).getFullJsonRep()
self.logger.debug('Returning dataset id %s: %s' % (id,response))
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def getExperimentDataset(self, experimentName, datasetName, **kwargs):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
response = self.datasetSessionControllerImpl.getExperimentDataset(experimentName, datasetName).getFullJsonRep()
self.logger.debug('Returning dataset %s: %s' % (datasetName,response))
return response
@cherrypy.expose
@DmSessionController.require(DmSessionController.isAdministrator())
@DmSessionController.execute
def getExperimentDatasetFiles(self, experimentName, datasetName, **kwargs):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
response = self.listToJson(self.datasetSessionControllerImpl.getExperimentDatasetFiles(experimentName, datasetName))
return response