Use python rather than string for primaryjoin

This commit is contained in:
George Drummond
2019-06-05 10:53:06 -04:00
parent c90e574e83
commit 0fa43021f8
4 changed files with 23 additions and 12 deletions

View File

@@ -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")

View File

@@ -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

View File

@@ -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")

View File

@@ -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(