From b2a6ddae64d85cc9298b107640878a4634a909ae Mon Sep 17 00:00:00 2001 From: lsetiawan Date: Tue, 26 Sep 2017 11:13:21 -0700 Subject: [PATCH 1/2] Fix person and organization filter for affiliations --- odm2api/ODM2/services/readService.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/odm2api/ODM2/services/readService.py b/odm2api/ODM2/services/readService.py index 22a2b19..6f1f92f 100644 --- a/odm2api/ODM2/services/readService.py +++ b/odm2api/ODM2/services/readService.py @@ -554,9 +554,11 @@ def getAffiliations(self, ids=None, personfirst=None, personlast=None, orgcode=N q = self._session.query(Affiliations) if ids: q = q.filter(Affiliations.AffiliationID.in_(ids)) - if orgcode: q = q.filter(Organizations.OrganizationCode.ilike(orgcode)) - if personfirst: q = q.filter(People.PersonFirstName.ilike(personfirst)) - if personlast: q = q.filter(People.PersonLastName.ilike(personlast)) + if orgcode: q = q.join(Organizations).filter(Organizations.OrganizationCode.ilike(orgcode)) + if personfirst or personlast: + q = q.join(People) + if personfirst: q = q.filter(People.PersonFirstName.ilike(personfirst)) + if personlast: q = q.filter(People.PersonLastName.ilike(personlast)) try: return q.all() From c28fcdebf76a55aa7f2525a131969d235fc43df3 Mon Sep 17 00:00:00 2001 From: lsetiawan Date: Tue, 26 Sep 2017 13:12:51 -0700 Subject: [PATCH 2/2] Use relationship object in join --- odm2api/ODM2/services/readService.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/odm2api/ODM2/services/readService.py b/odm2api/ODM2/services/readService.py index 6f1f92f..4cffa89 100644 --- a/odm2api/ODM2/services/readService.py +++ b/odm2api/ODM2/services/readService.py @@ -554,11 +554,12 @@ def getAffiliations(self, ids=None, personfirst=None, personlast=None, orgcode=N q = self._session.query(Affiliations) if ids: q = q.filter(Affiliations.AffiliationID.in_(ids)) - if orgcode: q = q.join(Organizations).filter(Organizations.OrganizationCode.ilike(orgcode)) - if personfirst or personlast: - q = q.join(People) - if personfirst: q = q.filter(People.PersonFirstName.ilike(personfirst)) - if personlast: q = q.filter(People.PersonLastName.ilike(personlast)) + if orgcode: q = q.join(Affiliations.OrganizationObj).filter( + Organizations.OrganizationCode.ilike(orgcode)) + if personfirst: q = q.join(Affiliations.PersonObj).filter( + People.PersonFirstName.ilike(personfirst)) + if personlast: q = q.join(Affiliations.PersonObj).filter( + People.PersonLastName.ilike(personlast)) try: return q.all()