#!/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