Skip to content

Commit e68260e

Browse files
author
stephanie
committed
fix related features
1 parent 23c97d4 commit e68260e

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

Examples/Sample.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@
3636
#_session = session_factory.getSession()
3737
read = ReadODM2(session_factory)
3838
create = CreateODM2(session_factory)
39-
results = read.getResults(siteid=1)
40-
resultValues = read.getResultValues(resultids=[1, 2, 3, 4, 5, 6])
41-
related = read.getRelatedSamplingFeatures(sfid = 1)
39+
results = read.getResults(siteid=1, variableid=2, type = "Measurement")
40+
resultValues = read.getResultValues(resultids=[2, 3, 4, 5, 6])
41+
relatedEmpty = read.getRelatedSamplingFeatures(sfid=1)
42+
related = read.getRelatedSamplingFeatures(sfid=2)
4243

4344
# Run some basic sample queries.
4445
# ------------------------------

odm2api/ODM2/services/readService.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ def getSamplingFeatures(self, ids=None, codes=None, uuids=None, type=None, wkt=N
362362
print("Error running Query: %s" % e)
363363
return None
364364

365-
def getRelatedSamplingFeatures(self, sfid=None, relationshiptype=None, code=None):
365+
def getRelatedSamplingFeatures(self, sfid=None, rfid = None, relationshiptype=None):
366366
#TODO: add functionality to filter by code
367367
"""
368368
@@ -374,16 +374,23 @@ def getRelatedSamplingFeatures(self, sfid=None, relationshiptype=None, code=None
374374
# join(User.addresses). \
375375
# filter(User.name == 'ed')
376376
#throws an error when joining entire samplingfeature, works fine when just getting an element. this is being caused by the sampling feature inheritance
377-
sf = self._session.query(SamplingFeatures.SamplingFeatureID).select_from(RelatedFeatures).join(RelatedFeatures.SamplingFeatureObj)
378-
if sfid: sf = sf.filter(RelatedFeatures.SamplingFeatureID == sfid)
377+
378+
sf = self._session.query(distinct(SamplingFeatures.SamplingFeatureID))\
379+
.select_from(RelatedFeatures)
380+
381+
382+
if sfid: sf = sf.join(RelatedFeatures.RelatedFeatureObj).filter(RelatedFeatures.SamplingFeatureID == sfid)
383+
if rfid: sf = sf.join(RelatedFeatures.SamplingFeatureObj).filter(RelatedFeatures.RelatedFeatureID == rfid)
379384
if relationshiptype: sf = sf.filter(RelatedFeatures.RelationshipTypeCV == relationshiptype)
380-
# if code: sf = sf.filter(RelatedFeatures.RelatedFeatureObj.Sampling)
381385
try:
382-
sfids =[x for x in sf.all()]
383-
return self.getSamplingFeatures(ids = sfids)
386+
sfids =[x[0] for x in sf.all()]
387+
if len(sfids)>0:
388+
sflist= self.getSamplingFeatures(ids=sfids)
389+
return sflist
390+
384391
except Exception as e:
385392
print("Error running Query: %s" % e)
386-
return None
393+
return None
387394

388395
"""
389396
Action
@@ -554,8 +561,10 @@ def getResults(self, ids=None, type=None, uuids=None, actionid=None, simulationi
554561
if siteid:
555562
sfids = [x[0] for x in self._session.query(distinct(SamplingFeatures.SamplingFeatureID))
556563
.select_from(RelatedFeatures)
557-
.join(RelatedFeatures.RelatedFeatureObj)
558-
.filter(RelatedFeatures.RelatedFeatureID == siteid).all()]
564+
.join(RelatedFeatures.SamplingFeatureObj)
565+
.filter(RelatedFeatures.RelatedFeatureID == siteid)
566+
#.filter(RelatedFeatures.RelationshipTypeCV == "Was Collected at")
567+
.all()]
559568
query = query.join(FeatureActions).filter(SamplingFeatures.SamplingFeatureID.in_(sfids))
560569

561570
try:

0 commit comments

Comments
 (0)