Use helper methods for adding and removing permissions

This commit is contained in:
richard-dds
2018-09-06 10:16:48 -04:00
parent 19d88ce4f5
commit 361630e446
2 changed files with 17 additions and 11 deletions

View File

@@ -7,7 +7,6 @@ Create Date: 2018-09-05 11:17:17.204089
""" """
from alembic import op from alembic import op
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
from sqlalchemy.orm.attributes import flag_modified
from atst.models.role import Role from atst.models.role import Role
from atst.models.permissions import Permissions from atst.models.permissions import Permissions
@@ -24,13 +23,10 @@ def upgrade():
session = Session(bind=op.get_bind()) session = Session(bind=op.get_bind())
owner_role = session.query(Role).filter_by(name="owner").one() owner_role = session.query(Role).filter_by(name="owner").one()
owner_role.permissions.append(Permissions.VIEW_WORKSPACE_MEMBERS) owner_role.add_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
ccpo_role = session.query(Role).filter_by(name="ccpo").one() ccpo_role = session.query(Role).filter_by(name="ccpo").one()
ccpo_role.permissions.append(Permissions.VIEW_WORKSPACE_MEMBERS) ccpo_role.add_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
flag_modified(owner_role, "permissions")
flag_modified(ccpo_role, "permissions")
session.add_all((ccpo_role, owner_role)) session.add_all((ccpo_role, owner_role))
session.commit() session.commit()
@@ -40,13 +36,10 @@ def downgrade():
session = Session(bind=op.get_bind()) session = Session(bind=op.get_bind())
owner_role = session.query(Role).filter_by(name="owner").one() owner_role = session.query(Role).filter_by(name="owner").one()
owner_role.permissions.append(Permissions.VIEW_WORKSPACE_MEMBERS) owner_role.remove_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
ccpo_role = session.query(Role).filter_by(name="ccpo").one() ccpo_role = session.query(Role).filter_by(name="ccpo").one()
ccpo_role.permissions.append(Permissions.VIEW_WORKSPACE_MEMBERS) ccpo_role.remove_permission(Permissions.VIEW_WORKSPACE_MEMBERS)
flag_modified(owner_role, "permissions")
flag_modified(ccpo_role, "permissions")
session.add_all((ccpo_role, owner_role)) session.add_all((ccpo_role, owner_role))
session.commit() session.commit()

View File

@@ -1,5 +1,6 @@
from sqlalchemy import String, Column from sqlalchemy import String, Column
from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.dialects.postgresql import ARRAY
from sqlalchemy.orm.attributes import flag_modified
from atst.models import Base from atst.models import Base
from .types import Id from .types import Id
@@ -12,3 +13,15 @@ class Role(Base):
name = Column(String, index=True, unique=True) name = Column(String, index=True, unique=True)
description = Column(String) description = Column(String)
permissions = Column(ARRAY(String), index=True, server_default="{}") permissions = Column(ARRAY(String), index=True, server_default="{}")
def add_permission(self, permission):
perms_set = set(self.permissions)
perms_set.add(permission)
self.permissions = list(perms_set)
flag_modified(self, "permissions")
def remove_permission(self, permission):
perms_set = set(self.permissions)
perms_set.discard(permission)
self.permissions = list(perms_set)
flag_modified(self, "permissions")