Add helper function

This commit is contained in:
Montana 2019-03-29 14:30:25 -04:00
parent d70332836b
commit 25563cf06a
2 changed files with 41 additions and 0 deletions

View File

@ -90,6 +90,20 @@ def portfolio_admin(portfolio_id):
return render_admin_page(portfolio)
def permission_set_has_changed(old_perm_set_names, new_perm_set_names):
has_changed = False
for perm_name in new_perm_set_names:
base = perm_name[4:]
if perm_name.split("_")[0] == "edit":
if perm_name not in old_perm_set_names:
has_changed = True
elif perm_name.split("_")[0] == "view":
edit_version = "edit" + base
if edit_version in old_perm_set_names:
has_changed = True
return has_changed
@portfolios_bp.route("/portfolios/<portfolio_id>/admin", methods=["POST"])
@user_can(Permissions.EDIT_PORTFOLIO_USERS, message="view portfolio admin page")
def edit_portfolio_members(portfolio_id):

View File

@ -1,6 +1,7 @@
from flask import url_for
from atst.domain.permission_sets import PermissionSets
from atst.routes.portfolios.index import permission_set_has_changed
from tests.factories import PortfolioFactory, PortfolioRoleFactory, UserFactory
@ -28,6 +29,32 @@ def test_member_table_access(client, user_session):
assert "<select" not in view_resp.data.decode()
def test_permission_set_has_changed_with_changes():
old_set = [
"edit_portfolio_application_management",
"view_portfolio_application_management",
]
new_set = ["view_portfolio_application_management"]
assert permission_set_has_changed(old_set, new_set)
old_set = ["view_funding"]
new_set = ["edit_funding"]
assert permission_set_has_changed(old_set, new_set)
def test_permission_set_has_changed_without_changes():
old_set = [
"edit_portfolio_application_management",
"view_portfolio_application_management",
]
new_set = ["edit_portfolio_application_management"]
assert not permission_set_has_changed(old_set, new_set)
old_set = ["view_funding"]
new_set = ["view_funding"]
assert not permission_set_has_changed(old_set, new_set)
def test_update_member_permissions(client, user_session):
portfolio = PortfolioFactory.create()
rando = UserFactory.create()