Use helper methods for adding and removing permissions
This commit is contained in:
@@ -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()
|
||||||
|
@@ -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")
|
||||||
|
Reference in New Issue
Block a user