From 0fa43021f88d3fdabc28a0751e2d627daf729424 Mon Sep 17 00:00:00 2001 From: George Drummond Date: Wed, 5 Jun 2019 10:53:06 -0400 Subject: [PATCH] Use python rather than string for primaryjoin --- atst/models/application.py | 14 ++++++++++---- atst/models/application_role.py | 7 +++++-- atst/models/portfolio.py | 6 +++--- atst/models/user.py | 8 +++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/atst/models/application.py b/atst/models/application.py index 414cacef..0f177a22 100644 --- a/atst/models/application.py +++ b/atst/models/application.py @@ -1,9 +1,11 @@ -from sqlalchemy import Column, ForeignKey, String +from sqlalchemy import and_, Column, ForeignKey, String from sqlalchemy.orm import relationship, synonym from atst.models import Base -from atst.models.types import Id +from atst.models.application_role import ApplicationRole +from atst.models.environment import Environment from atst.models import mixins +from atst.models.types import Id class Application( @@ -20,11 +22,15 @@ class Application( environments = relationship( "Environment", back_populates="application", - primaryjoin="and_(Environment.application_id==Application.id, Environment.deleted==False)", + primaryjoin=and_( + Environment.application_id == id, Environment.deleted == False + ), ) roles = relationship( "ApplicationRole", - primaryjoin="and_(ApplicationRole.application_id==Application.id, ApplicationRole.deleted==False)", + primaryjoin=and_( + ApplicationRole.application_id == id, ApplicationRole.deleted == False + ), ) members = synonym("roles") diff --git a/atst/models/application_role.py b/atst/models/application_role.py index 9bcb0f6e..db08d639 100644 --- a/atst/models/application_role.py +++ b/atst/models/application_role.py @@ -1,11 +1,12 @@ from enum import Enum -from sqlalchemy import Index, ForeignKey, Column, Enum as SQLAEnum, Table +from sqlalchemy import and_, Index, ForeignKey, Column, Enum as SQLAEnum, Table from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship from sqlalchemy.event import listen from atst.utils import first_or_none from atst.models import Base, mixins +from atst.models.environment_role import EnvironmentRole from atst.models.mixins.auditable import record_permission_sets_updates from .types import Id @@ -53,7 +54,9 @@ class ApplicationRole( environment_roles = relationship( "EnvironmentRole", - primaryjoin="and_(EnvironmentRole.application_role_id==ApplicationRole.id, EnvironmentRole.deleted==False)", + primaryjoin=and_( + EnvironmentRole.application_role_id == id, EnvironmentRole.deleted == False + ), ) @property diff --git a/atst/models/portfolio.py b/atst/models/portfolio.py index bcf09c97..446a77cf 100644 --- a/atst/models/portfolio.py +++ b/atst/models/portfolio.py @@ -1,9 +1,9 @@ -from sqlalchemy import Column, String +from sqlalchemy import and_, Column, String from sqlalchemy.orm import relationship from sqlalchemy.types import ARRAY from itertools import chain -from atst.models import Base, mixins, types +from atst.models import Base, Application, mixins, types from atst.models.portfolio_role import PortfolioRole, Status as PortfolioRoleStatus from atst.domain.permission_sets import PermissionSets from atst.utils import first_or_none @@ -29,7 +29,7 @@ class Portfolio(Base, mixins.TimestampsMixin, mixins.AuditableMixin): applications = relationship( "Application", back_populates="portfolio", - primaryjoin="and_(Application.portfolio_id==Portfolio.id, Application.deleted==False)", + primaryjoin=and_(Application.portfolio_id == id, Application.deleted == False), ) roles = relationship("PortfolioRole") diff --git a/atst/models/user.py b/atst/models/user.py index 61ba0c79..1834c6dd 100644 --- a/atst/models/user.py +++ b/atst/models/user.py @@ -1,8 +1,8 @@ -from sqlalchemy import String, ForeignKey, Column, Date, Boolean, Table, TIMESTAMP +from sqlalchemy import and_, String, ForeignKey, Column, Date, Boolean, Table, TIMESTAMP from sqlalchemy.orm import relationship from sqlalchemy.dialects.postgresql import UUID -from atst.models import Base, types, mixins +from atst.models import Base, ApplicationRole, types, mixins from atst.models.permissions import Permissions from atst.models.portfolio_invitation import PortfolioInvitation from atst.models.application_invitation import ApplicationInvitation @@ -30,7 +30,9 @@ class User( application_roles = relationship( "ApplicationRole", backref="user", - primaryjoin="and_(ApplicationRole.user_id==User.id, ApplicationRole.deleted==False)", + primaryjoin=and_( + ApplicationRole.user_id == id, ApplicationRole.deleted == False + ), ) portfolio_invitations = relationship(