Make one query

This commit is contained in:
George Drummond 2019-05-22 13:32:13 -04:00
parent 9098bc7c0b
commit b61f304bad
No known key found for this signature in database
GPG Key ID: 296DD6077123BF17

View File

@ -14,15 +14,6 @@ class PortfoliosQuery(Query):
@classmethod @classmethod
def get_for_user(cls, user): def get_for_user(cls, user):
granted_applications = (
db.session.query(Application)
.join(ApplicationRole)
.filter(ApplicationRole.application_id == Application.id)
.filter(ApplicationRole.user_id == user.id)
.filter(ApplicationRole.status == ApplicationRoleStatus.ACTIVE)
.subquery()
)
return ( return (
db.session.query(Portfolio) db.session.query(Portfolio)
.filter( .filter(
@ -30,9 +21,19 @@ class PortfoliosQuery(Query):
db.session.query(Portfolio.id) db.session.query(Portfolio.id)
.join(Application) .join(Application)
.filter(Portfolio.id == Application.portfolio_id) .filter(Portfolio.id == Application.portfolio_id)
.filter(Application.id == granted_applications.c.id) .filter(
Application.id.in_(
db.session.query(Application.id)
.join(ApplicationRole)
.filter(ApplicationRole.application_id == Application.id)
.filter(ApplicationRole.user_id == user.id)
.filter(
ApplicationRole.status == ApplicationRoleStatus.ACTIVE
)
.subquery() .subquery()
) )
)
)
| Portfolio.id.in_( | Portfolio.id.in_(
db.session.query(Portfolio.id) db.session.query(Portfolio.id)
.join(PortfolioRole) .join(PortfolioRole)