Skip to content

Commit 2a22676

Browse files
author
sreeder
committed
update getDatasets and create getDatasetsResults functions
1 parent 4f11a28 commit 2a22676

1 file changed

Lines changed: 69 additions & 4 deletions

File tree

odm2api/ODM2/services/readService.py

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -686,23 +686,88 @@ def getResults(self, ids=None, type=None, uuids=None, actionid=None, simulationi
686686
return None
687687

688688
# Datasets
689-
def getDataSets(self, codes=None, uuids=None):
689+
def getDataSets(self, ids= None, codes=None, uuids=None, dstype=None):
690690
"""
691-
* Pass nothing - returns a list of all DataSet objects
692-
* Pass a list of DataSetCode - returns a single DataSet object for each code
693-
* Pass a list of UUIDS - returns a single DataSet object for each UUID
691+
Retrieve a list of Datasets
692+
693+
Args:
694+
ids (list, optional): List of DataSetsIDs.
695+
codes (list, optional): List of DataSet Codes.
696+
uuids (list, optional): List of Dataset UUIDs string.
697+
dstype (str, optional): Type of Dataset from
698+
`controlled vocabulary name <http://vocabulary.odm2.org/datasettype/>`_.
699+
700+
701+
Returns:
702+
list: List of DataSets Objects
703+
704+
Examples:
705+
>>> READ = ReadODM2(SESSION_FACTORY)
706+
>>> READ.getDataSets(ids=[39, 40])
707+
>>> READ.getDataSets(codes=['HOME', 'FIELD'])
708+
>>> READ.getDataSets(uuids=['a6f114f1-5416-4606-ae10-23be32dbc202',
709+
... '5396fdf3-ceb3-46b6-aaf9-454a37278bb4'])
710+
>>> READ.getDataSets(dstype='singleTimeSeries')
711+
694712
"""
695713
q = self._session.query(DataSets)
714+
if ids:
715+
q = q.filter(DataSets.DataSetID.in_(codes))
696716
if codes:
697717
q = q.filter(DataSets.DataSetCode.in_(codes))
698718
if uuids:
699719
q.filter(DataSets.DataSetUUID.in_(uuids))
720+
if dstype:
721+
q = q.filter(DataSets.DataSetTypeCV == dstype)
700722
try:
701723
return q.all()
702724
except Exception as e:
703725
print('Error running Query {}'.format(e))
704726
return None
705727

728+
# Datasets
729+
730+
def getDataSetsResults(self, ids= None, codes=None, uuids=None, dstype=None):
731+
"""
732+
Retrieve a detailed list of Datasets along with detailed metadata about the datasets
733+
and the results contained within them
734+
735+
Args:
736+
ids (list, optional): List of DataSetsIDs.
737+
codes (list, optional): List of DataSet Codes.
738+
uuids (list, optional): List of Dataset UUIDs string.
739+
dstype (str, optional): Type of Dataset from
740+
`controlled vocabulary name <http://vocabulary.odm2.org/datasettype/>`_.
741+
742+
743+
Returns:
744+
list: List of DataSetsResults Objects
745+
746+
Examples:
747+
>>> READ = ReadODM2(SESSION_FACTORY)
748+
>>> READ.getDataSetsResults(ids=[39, 40])
749+
>>> READ.getDataSetsResults(codes=['HOME', 'FIELD'])
750+
>>> READ.getDataSetsResults(uuids=['a6f114f1-5416-4606-ae10-23be32dbc202',
751+
... '5396fdf3-ceb3-46b6-aaf9-454a37278bb4'])
752+
>>> READ.getDataSetsResults(dstype='singleTimeSeries')
753+
754+
"""
755+
q = self._session.query(DataSetsResults)\
756+
.join(DataSets)
757+
if ids:
758+
q = q.filter(DataSets.DataSetID.in_(codes))
759+
if codes:
760+
q = q.filter(DataSets.DataSetCode.in_(codes))
761+
if uuids:
762+
q.filter(DataSets.DataSetUUID.in_(uuids))
763+
if dstype:
764+
q = q.filter(DataSets.DataSetTypeCV == dstype)
765+
try:
766+
return q.all()
767+
except Exception as e:
768+
print('Error running Query {}'.format(e))
769+
return None
770+
706771
def getSamplingFeatureDatasets(self, ids=None, codes=None, uuids=None, dstype=None):
707772
"""
708773
Retrieve a list of Datasets associated with the given sampling feature data.

0 commit comments

Comments
 (0)