Skip to content
Snippets Groups Projects
datasetSessionController.py 5.51 KiB
Newer Older
#!/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