From 9a7c5e938e2bbe92439938a9f4d31caa918107d9 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Tue, 7 Mar 2017 21:24:10 +0000 Subject: [PATCH] more api docs added --- doc/sphinx/source/dm.ds_web_service.api.rst | 2 +- .../dm/ds_web_service/api/experimentDsApi.py | 81 ++++++++++++++++++- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/doc/sphinx/source/dm.ds_web_service.api.rst b/doc/sphinx/source/dm.ds_web_service.api.rst index 00894151..e42cde42 100644 --- a/doc/sphinx/source/dm.ds_web_service.api.rst +++ b/doc/sphinx/source/dm.ds_web_service.api.rst @@ -7,6 +7,6 @@ ExperimentDsApi .. autoclass:: dm.ds_web_service.api.experimentDsApi.ExperimentDsApi() :show-inheritance: - :members: __init__, getExperimentTypes, getExperiments, getExperimentsByStation + :members: __init__, getExperimentTypes, getExperiments, getExperimentsByStation, getExperimentByName, getExperimentById, addExperiment diff --git a/src/python/dm/ds_web_service/api/experimentDsApi.py b/src/python/dm/ds_web_service/api/experimentDsApi.py index b0e97e89..0271700f 100755 --- a/src/python/dm/ds_web_service/api/experimentDsApi.py +++ b/src/python/dm/ds_web_service/api/experimentDsApi.py @@ -88,11 +88,13 @@ class ExperimentDsApi(DsRestApi): :returns: list of Experiment objects + :raises InvalidRequest: if station name is empty or None + :raises AuthorizationError: in case user is not authorized to manage the given DM station :raises DmException: in case of any other errors - >>> experimentList = api.getExperiments() + >>> experimentList = api.getExperimentsByStation() >>> for experiment in experimentList: >>> print experiment['id'], experiment['name'] ''' @@ -103,16 +105,52 @@ class ExperimentDsApi(DsRestApi): responseData = self.sendSessionRequest(url=url, method='GET') return self.toDmObjectList(responseData, Experiment) - @DsRestApi.execute + @DsRestApi.execute2 def getExperimentByName(self, name): + ''' + Get experiment. + + :param name: experiment name + :type name: str + + :returns: Experiment object + + :raises InvalidRequest: if experiment name is empty or None + + :raises AuthorizationError: in case user is not authorized to manage the DM station to which this experiment belongs + + :raises DmException: in case of any other errors + + >>> experiment = api.getExperimentByName('test01') + >>> print experiment['id'] + ''' + url = '%s/experimentsByName/%s' % (self.getContextRoot(), name) if name is None or not len(name): raise InvalidRequest('Experiment name must be provided.') responseDict = self.sendSessionRequest(url=url, method='GET') return Experiment(responseDict) - @DsRestApi.execute + @DsRestApi.execute2 def getExperimentById(self, id): + ''' + Get experiment. + + :param id: experiment id + :type id: int + + :returns: Experiment object + + :raises InvalidRequest: if experiment id is None + + :raises AuthorizationError: in case user is not authorized to manage the DM station to which this experiment belongs + + :raises DmException: in case of any other errors + + >>> experiment = api.getExperimentById(123) + >>> print experiment['name'] + ''' + url = '%s/experimentsById/%s' % (self.getContextRoot(), id) if id is None: raise InvalidRequest('Experiment id must be provided.') @@ -146,8 +184,43 @@ class ExperimentDsApi(DsRestApi): responseDict = self.sendSessionRequest(url=url, method='PUT') return Experiment(responseDict) - @DsRestApi.execute + @DsRestApi.execute2 def addExperiment(self, name, stationName, typeName, description, startDate, endDate): + ''' + Add experiment. + + :param name: experiment name + :type name: str + + :param stationName: DM station name + :type stationName: str + + :param typeName: experiment type + :type typeName: str + + :param description: experiment description + :type description: str + + :param startDate: experiment start date + :type startDate: str + + :param endDate: experiment end date + :type endDate: str + + :returns: Experiment object + + :raises InvalidRequest: if one of the required arguments (experiment name, station name and experiment type) is empty or None + + :raises AuthorizationError: in case user is not authorized to manage the DM station to which this experiment belongs + + :raises ObjectAlreadyExists: if experiment with a given name already exists + + :raises DmException: in case of any other errors + + >>> experiment = api.addExperiment(name='test01', stationName='TEST', typeName='TEST') + >>> print experiment['id'] + ''' + url = '%s/experiments' % (self.getContextRoot()) if not name: raise InvalidRequest('Experiment name must be provided.') -- GitLab