portfolio role knows its entire permissions list

This commit is contained in:
dandds 2019-03-10 15:21:52 -04:00
parent 8af3986a2d
commit 6805041b13
2 changed files with 15 additions and 0 deletions

View File

@ -58,6 +58,12 @@ class PortfolioRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
permission_sets = relationship("Role", secondary=portfolio_roles_roles) permission_sets = relationship("Role", secondary=portfolio_roles_roles)
@property
def permissions(self):
return [
perm for permset in self.permission_sets for perm in permset.permissions
]
def __repr__(self): def __repr__(self):
return "<PortfolioRole(role='{}', portfolio='{}', user_id='{}', id='{}')>".format( return "<PortfolioRole(role='{}', portfolio='{}', user_id='{}', id='{}')>".format(
self.role.name, self.portfolio.name, self.user_id, self.id self.role.name, self.portfolio.name, self.user_id, self.id

View File

@ -3,6 +3,7 @@ import datetime
from atst.domain.environments import Environments from atst.domain.environments import Environments
from atst.domain.portfolios import Portfolios from atst.domain.portfolios import Portfolios
from atst.domain.applications import Applications from atst.domain.applications import Applications
from atst.domain.roles import Roles
from atst.models.portfolio_role import Status from atst.models.portfolio_role import Status
from atst.models.role import Role from atst.models.role import Role
from atst.models.invitation import Status as InvitationStatus from atst.models.invitation import Status as InvitationStatus
@ -298,3 +299,11 @@ def test_can_list_all_environments():
) )
assert len(portfolio.all_environments) == 9 assert len(portfolio.all_environments) == 9
def test_can_list_all_permissions():
role_one = Roles.get("view_portfolio_funding")
role_two = Roles.get("view_portfolio_reports")
port_role = PortfolioRoleFactory.create(permission_sets=[role_one, role_two])
expected_perms = role_one.permissions + role_two.permissions
assert expected_perms == expected_perms