#!/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.fileSessionControllerImpl import FileSessionControllerImpl class FileSessionController(DmSessionController): def __init__(self): DmSessionController.__init__(self) self.fileSessionControllerImpl = FileSessionControllerImpl() @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def addExperimentFile(self, experimentName, encodedExperimentFilePath, **kwargs): if not experimentName: raise InvalidRequest('Invalid experiment name provided.') experimentFilePath = Encoder.decode(encodedExperimentFilePath) if not experimentFilePath: raise InvalidRequest('Invalid experiment file path provided.') encodedFileInfo = kwargs.get('fileInfo') if not encodedFileInfo: raise InvalidRequest('Invalid file info provided.') fileInfo = json.loads(Encoder.decode(encodedFileInfo)) fileInfo['experimentFilePath'] = experimentFilePath fileInfo['experimentName'] = experimentName response = self.fileSessionControllerImpl.addExperimentFile(fileInfo).getFullJsonRep() self.logger.debug('Added file %s: %s' % (experimentFilePath,response)) return response @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def updateExperimentFile(self, experimentName, encodedExperimentFilePath, **kwargs): if not experimentName: raise InvalidRequest('Invalid experiment name provided.') experimentFilePath = Encoder.decode(encodedExperimentFilePath) if not experimentFilePath: raise InvalidRequest('Invalid experiment file path provided.') encodedFileInfo = kwargs.get('fileInfo') if not encodedFileInfo: raise InvalidRequest('Invalid file info provided.') fileInfo = json.loads(Encoder.decode(encodedFileInfo)) fileInfo['experimentFilePath'] = experimentFilePath fileInfo['experimentName'] = experimentName response = self.fileSessionControllerImpl.updateExperimentFile(fileInfo).getFullJsonRep() self.logger.debug('Updated file %s: %s' % (experimentFilePath,response)) return response @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def updateExperimentFileById(self, expermentName, id, **kwargs): if not experimentName: raise InvalidRequest('Invalid experiment name provided.') if not id: raise InvalidRequest('Invalid file id provided.') encodedFileInfo = kwargs.get('fileInfo') if not encodedFileInfo: raise InvalidRequest('Invalid file info provided.') fileInfo = json.loads(Encoder.decode(encodedFileInfo)) fileInfo['experimentName'] = experimentName response = self.fileSessionControllerImpl.updateExperimentFileById(fileInfo).getFullJsonRep() self.logger.debug('Updated file id %s: %s' % (id,response)) return response @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def getExperimentFiles(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.fileSessionControllerImpl.getExperimentFiles(experimentName, queryDict=queryDict)) @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def getExperimentFileById(self, experimentName, id, **kwargs): if not experimentName: raise InvalidRequest('Invalid experiment name provided.') if not id: raise InvalidRequest('Invalid id provided.') response = self.fileSessionControllerImpl.getExperimentFileById(experimentName, id).getFullJsonRep() self.logger.debug('Returning file id %s: %s' % (id,response)) return response @cherrypy.expose @DmSessionController.require(DmSessionController.canManageStation()) @DmSessionController.execute def getExperimentFile(self, experimentName, encodedExperimentFilePath, **kwargs): if not experimentName: raise InvalidRequest('Invalid experiment name provided.') experimentFilePath = Encoder.decode(encodedExperimentFilePath) if not experimentFilePath: raise InvalidRequest('Invalid experiment file path provided.') response = self.fileSessionControllerImpl.getExperimentFile(experimentName, experimentFilePath).getFullJsonRep() self.logger.debug('Returning file %s: %s' % (experimentFilePath,response)) return response