Skip to content

Commit e225a01

Browse files
committed
[#28] fixed getRelatedModelsByCode
1 parent 3208013 commit e225a01

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

odm2api/ODM2/services/readService.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
__author__ = 'jmeline'
22

3-
from sqlalchemy import func
3+
from sqlalchemy import func, exc
44
import pandas as pd
55

66
from odm2api.ODM2 import serviceBase
@@ -938,17 +938,29 @@ def getSimulationByActionID(self, actionID):
938938
return None
939939

940940
def getRelatedModelsByID(self, modelid):
941+
"""
942+
queries the ODM2 for any models that have a relationship with the provided model id
943+
:param modelid: id of the model to search
944+
:return: all models related to the specified id
945+
"""
941946
try:
942947
return self._session.query(RelatedModels).filter_by(RelatedModelID=modelid).all()
943-
except:
944-
return None
948+
except Exception, e:
949+
print e
950+
return None
945951

946952
def getRelatedModelsByCode(self, modelcode):
953+
"""
954+
queries the ODM2 for any models that have a relationship with the provided model id
955+
:param modelcode: the code of the model to search
956+
:return: all models related to the provided model code
957+
"""
947958
try:
948-
return self._session.query(Relatedmodel).join(Relatedmodel.ModelID == Model.ModelID) \
949-
.filter(Model.ModelCode == modelcode)
950-
except:
951-
return None
959+
return self._session.query(RelatedModels).join(Models, RelatedModels.RelatedModelID == Models.ModelID) \
960+
.filter(Models.ModelCode == modelcode).all()
961+
except Exception, e:
962+
print e
963+
return None
952964

953965
def getResultsBySimulationID(self, simulationID):
954966
try:

tests/test_odm2/test_readservice.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,17 @@ def test_getRelatedModelsByCode(self):
145145
resapi = self.reader.getRelatedModelsByCode('swmm')
146146

147147
assert resapi is not None
148-
assert resapi[0].RelatedModelObj.ModelCode == 'swat'
148+
assert len(resapi) > 0
149+
assert resapi[0].ModelObj.ModelCode == 'swat'
150+
151+
# test model code that doesn't exist
152+
resapi = self.reader.getRelatedModelsByCode('None')
153+
assert resapi is not None
154+
assert len(resapi) == 0
155+
156+
# test invalid argument
157+
resapi = self.reader.getRelatedModelsByCode(models.ActionBy)
158+
assert resapi is None
149159

150160

151161
# ################################################################################

0 commit comments

Comments
 (0)