From 31bcb662b5ce1ca0d57a8e9bd1cf7e134d3c5439 Mon Sep 17 00:00:00 2001 From: dandds Date: Thu, 7 Mar 2019 06:22:23 -0500 Subject: [PATCH] add join table between portfolio_roles and roles --- ...6_add_permission_sets_to_portfolio_role.py | 33 +++++++++++++++++++ atst/models/portfolio_role.py | 12 ++++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 alembic/versions/938a31795096_add_permission_sets_to_portfolio_role.py diff --git a/alembic/versions/938a31795096_add_permission_sets_to_portfolio_role.py b/alembic/versions/938a31795096_add_permission_sets_to_portfolio_role.py new file mode 100644 index 00000000..f31042d1 --- /dev/null +++ b/alembic/versions/938a31795096_add_permission_sets_to_portfolio_role.py @@ -0,0 +1,33 @@ +"""add permission sets to portfolio_role + +Revision ID: 938a31795096 +Revises: db161adbafdf +Create Date: 2019-03-07 06:13:05.400911 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '938a31795096' +down_revision = 'db161adbafdf' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('portfolio_roles_roles', + sa.Column('portfolio_role_id', postgresql.UUID(as_uuid=True), nullable=True), + sa.Column('role_id', postgresql.UUID(as_uuid=True), nullable=True), + sa.ForeignKeyConstraint(['portfolio_role_id'], ['portfolio_roles.id'], ), + sa.ForeignKeyConstraint(['role_id'], ['roles.id'], ) + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('portfolio_roles_roles') + # ### end Alembic commands ### diff --git a/atst/models/portfolio_role.py b/atst/models/portfolio_role.py index b41ae322..57e39c5b 100644 --- a/atst/models/portfolio_role.py +++ b/atst/models/portfolio_role.py @@ -1,5 +1,5 @@ from enum import Enum -from sqlalchemy import Index, ForeignKey, Column, Enum as SQLAEnum +from sqlalchemy import Index, ForeignKey, Column, Enum as SQLAEnum, Table from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship @@ -30,6 +30,14 @@ class Status(Enum): PENDING = "pending" +portfolio_roles_roles = Table( + "portfolio_roles_roles", + Base.metadata, + Column("portfolio_role_id", UUID(as_uuid=True), ForeignKey("portfolio_roles.id")), + Column("role_id", UUID(as_uuid=True), ForeignKey("roles.id")), +) + + class PortfolioRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin): __tablename__ = "portfolio_roles" @@ -48,6 +56,8 @@ class PortfolioRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin): status = Column(SQLAEnum(Status, native_enum=False), default=Status.PENDING) + permission_sets = relationship("Role", secondary=portfolio_roles_roles) + def __repr__(self): return "".format( self.role.name, self.portfolio.name, self.user_id, self.id