Use sqlalchemy or_
This commit is contained in:
parent
bb4b52c6ac
commit
41e2d14e7d
@ -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,29 +18,34 @@ class PortfoliosQuery(Query):
|
|||||||
return (
|
return (
|
||||||
db.session.query(Portfolio)
|
db.session.query(Portfolio)
|
||||||
.filter(
|
.filter(
|
||||||
Portfolio.id.in_(
|
or_(
|
||||||
db.session.query(Portfolio.id)
|
Portfolio.id.in_(
|
||||||
.join(Application)
|
db.session.query(Portfolio.id)
|
||||||
.filter(Portfolio.id == Application.portfolio_id)
|
.join(Application)
|
||||||
.filter(
|
.filter(Portfolio.id == Application.portfolio_id)
|
||||||
Application.id.in_(
|
.filter(
|
||||||
db.session.query(Application.id)
|
Application.id.in_(
|
||||||
.join(ApplicationRole)
|
db.session.query(Application.id)
|
||||||
.filter(ApplicationRole.application_id == Application.id)
|
.join(ApplicationRole)
|
||||||
.filter(ApplicationRole.user_id == user.id)
|
.filter(
|
||||||
.filter(
|
ApplicationRole.application_id == Application.id
|
||||||
ApplicationRole.status == ApplicationRoleStatus.ACTIVE
|
)
|
||||||
|
.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)
|
.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())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user