From b61f304bad8d6a9df24f8d8ad85d6d8b0d1e3768 Mon Sep 17 00:00:00 2001 From: George Drummond Date: Wed, 22 May 2019 13:32:13 -0400 Subject: [PATCH] Make one query --- atst/domain/portfolios/query.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/atst/domain/portfolios/query.py b/atst/domain/portfolios/query.py index a24c719e..e4242531 100644 --- a/atst/domain/portfolios/query.py +++ b/atst/domain/portfolios/query.py @@ -14,15 +14,6 @@ class PortfoliosQuery(Query): @classmethod 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 ( db.session.query(Portfolio) .filter( @@ -30,8 +21,18 @@ class PortfoliosQuery(Query): db.session.query(Portfolio.id) .join(Application) .filter(Portfolio.id == Application.portfolio_id) - .filter(Application.id == granted_applications.c.id) - .subquery() + .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() + ) + ) ) | Portfolio.id.in_( db.session.query(Portfolio.id)