Forked from
DM / dm-docs
261 commits behind, 854 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
fileSessionController.py 5.08 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.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