Use sqlalchemy or_

This commit is contained in:
George Drummond
2019-05-22 15:17:31 -04:00
parent bb4b52c6ac
commit 41e2d14e7d

View File

@@ -1,3 +1,4 @@
from sqlalchemy import or_
from atst.database import db from atst.database import db
from atst.domain.common import Query from atst.domain.common import Query
from atst.models.portfolio import Portfolio from atst.models.portfolio import Portfolio
@@ -17,6 +18,7 @@ class PortfoliosQuery(Query):
return ( return (
db.session.query(Portfolio) db.session.query(Portfolio)
.filter( .filter(
or_(
Portfolio.id.in_( Portfolio.id.in_(
db.session.query(Portfolio.id) db.session.query(Portfolio.id)
.join(Application) .join(Application)
@@ -25,21 +27,25 @@ class PortfoliosQuery(Query):
Application.id.in_( Application.id.in_(
db.session.query(Application.id) db.session.query(Application.id)
.join(ApplicationRole) .join(ApplicationRole)
.filter(ApplicationRole.application_id == Application.id) .filter(
ApplicationRole.application_id == Application.id
)
.filter(ApplicationRole.user_id == user.id) .filter(ApplicationRole.user_id == user.id)
.filter( .filter(
ApplicationRole.status == ApplicationRoleStatus.ACTIVE 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)
.filter(PortfolioRole.user == user) .filter(PortfolioRole.user == user)
.filter(PortfolioRole.status == PortfolioRoleStatus.ACTIVE) .filter(PortfolioRole.status == PortfolioRoleStatus.ACTIVE)
.subquery() .subquery()
),
) )
) )
.order_by(Portfolio.name.asc()) .order_by(Portfolio.name.asc())