Forked from
DM / dm-docs
261 commits behind, 746 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
experimentSessionControllerImpl.py 2.69 KiB
#!/usr/bin/env python
#
# Implementation for experiment session controller.
#
import time
from dm.common.objects.experiment import Experiment
from dm.common.objects.dmObjectManager import DmObjectManager
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.db.api.experimentDbApi import ExperimentDbApi
from dm.ds_web_service.service.impl.experimentManager import ExperimentManager
class ExperimentSessionControllerImpl(DmObjectManager):
""" Experiment session controller implementation class. """
def __init__(self):
DmObjectManager.__init__(self)
self.experimentDbApi = ExperimentDbApi()
def getExperimentTypes(self):
experimentTypeList = self.experimentDbApi.getExperimentTypes()
return experimentTypeList
def getExperiments(self):
experimentList = self.experimentDbApi.getExperiments()
return experimentList
def getExperimentsByStation(self, stationName):
experimentList = self.experimentDbApi.getExperimentsByStation(stationName)
return experimentList
def getExperimentByName(self, name):
experiment = self.experimentDbApi.getExperimentWithUsers(name)
ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment)
return experiment
def getExperimentById(self, id):
experiment = self.experimentDbApi.getExperimentById(id)
ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment)
return experiment
def addExperiment(self, name, stationName, typeId, description, startDate, endDate):
experiment = self.experimentDbApi.addExperiment(name, stationName, typeId, description, startDate, endDate)
ExperimentManager.getInstance().createExperimentDataDirectory(experiment)
return experiment
def startExperiment(self, experiment):
experiment2 = self.experimentDbApi.setExperimentStartDateToNow(experiment['name'])
experiment['startDate'] = experiment2['startDate']
return experiment
def updateExperiment(self, experiment):
ExperimentManager.getInstance().updateExperimentGroupUsers(experiment)
return experiment
def stopExperiment(self, experiment):
experiment = self.experimentDbApi.setExperimentEndDateToNow(experiment['name'])
ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment)
return experiment
def authorizeDownload(self, username, experiment):
return ExperimentManager.getInstance().authorizeDownload(username, experiment)
def deauthorizeDownload(self, username, experiment):
return ExperimentManager.getInstance().deauthorizeDownload(username, experiment)