Merge pull request #870 from dod-ccpo/primaryjoins

Use python rather than string for primaryjoin
This commit is contained in:
George Drummond 2019-06-05 14:55:59 -04:00 committed by GitHub
commit fd171754cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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 sqlalchemy.orm import relationship, synonym
from atst.models import Base 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 import mixins
from atst.models.types import Id
class Application( class Application(
@ -20,11 +22,15 @@ class Application(
environments = relationship( environments = relationship(
"Environment", "Environment",
back_populates="application", back_populates="application",
primaryjoin="and_(Environment.application_id==Application.id, Environment.deleted==False)", primaryjoin=and_(
Environment.application_id == id, Environment.deleted == False
),
) )
roles = relationship( roles = relationship(
"ApplicationRole", "ApplicationRole",
primaryjoin="and_(ApplicationRole.application_id==Application.id, ApplicationRole.deleted==False)", primaryjoin=and_(
ApplicationRole.application_id == id, ApplicationRole.deleted == False
),
) )
members = synonym("roles") members = synonym("roles")

View File

@ -1,11 +1,12 @@
from enum import Enum 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.dialects.postgresql import UUID
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from sqlalchemy.event import listen from sqlalchemy.event import listen
from atst.utils import first_or_none from atst.utils import first_or_none
from atst.models import Base, mixins from atst.models import Base, mixins
from atst.models.environment_role import EnvironmentRole
from atst.models.mixins.auditable import record_permission_sets_updates from atst.models.mixins.auditable import record_permission_sets_updates
from .types import Id from .types import Id
@ -53,7 +54,9 @@ class ApplicationRole(
environment_roles = relationship( environment_roles = relationship(
"EnvironmentRole", "EnvironmentRole",
primaryjoin="and_(EnvironmentRole.application_role_id==ApplicationRole.id, EnvironmentRole.deleted==False)", primaryjoin=and_(
EnvironmentRole.application_role_id == id, EnvironmentRole.deleted == False
),
) )
@property @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.orm import relationship
from sqlalchemy.types import ARRAY from sqlalchemy.types import ARRAY
from itertools import chain 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.models.portfolio_role import PortfolioRole, Status as PortfolioRoleStatus
from atst.domain.permission_sets import PermissionSets from atst.domain.permission_sets import PermissionSets
from atst.utils import first_or_none from atst.utils import first_or_none
@ -29,7 +29,7 @@ class Portfolio(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
applications = relationship( applications = relationship(
"Application", "Application",
back_populates="portfolio", 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") 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.orm import relationship
from sqlalchemy.dialects.postgresql import UUID 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.permissions import Permissions
from atst.models.portfolio_invitation import PortfolioInvitation from atst.models.portfolio_invitation import PortfolioInvitation
from atst.models.application_invitation import ApplicationInvitation from atst.models.application_invitation import ApplicationInvitation
@ -30,7 +30,9 @@ class User(
application_roles = relationship( application_roles = relationship(
"ApplicationRole", "ApplicationRole",
backref="user", backref="user",
primaryjoin="and_(ApplicationRole.user_id==User.id, ApplicationRole.deleted==False)", primaryjoin=and_(
ApplicationRole.user_id == id, ApplicationRole.deleted == False
),
) )
portfolio_invitations = relationship( portfolio_invitations = relationship(