No need to manually check for update or flash
This commit is contained in:
parent
ba2a63bffc
commit
c46746d43d
@ -90,39 +90,19 @@ def portfolio_admin(portfolio_id):
|
|||||||
return render_admin_page(portfolio)
|
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"])
|
@portfolios_bp.route("/portfolios/<portfolio_id>/admin", methods=["POST"])
|
||||||
@user_can(Permissions.EDIT_PORTFOLIO_USERS, message="view portfolio admin page")
|
@user_can(Permissions.EDIT_PORTFOLIO_USERS, message="view portfolio admin page")
|
||||||
def edit_portfolio_members(portfolio_id):
|
def edit_portfolio_members(portfolio_id):
|
||||||
portfolio = Portfolios.get_for_update(portfolio_id)
|
portfolio = Portfolios.get_for_update(portfolio_id)
|
||||||
member_perms_form = member_forms.MembersPermissionsForm(http_request.form)
|
member_perms_form = member_forms.MembersPermissionsForm(http_request.form)
|
||||||
have_any_perms_changed = False
|
|
||||||
|
|
||||||
for subform in member_perms_form.members_permissions:
|
for subform in member_perms_form.members_permissions:
|
||||||
new_perm_set = subform.data["permission_sets"]
|
new_perm_set = subform.data["permission_sets"]
|
||||||
user_id = subform.user_id.data
|
user_id = subform.user_id.data
|
||||||
portfolio_role = PortfolioRoles.get(portfolio.id, user_id)
|
portfolio_role = PortfolioRoles.get(portfolio.id, user_id)
|
||||||
old_perm_set = [perm.name for perm in portfolio_role.permission_sets]
|
PortfolioRoles.update(portfolio_role, new_perm_set)
|
||||||
|
|
||||||
if permission_set_has_changed(old_perm_set, new_perm_set):
|
flash("update_portfolio_members", portfolio=portfolio)
|
||||||
PortfolioRoles.update(portfolio_role, new_perm_set)
|
|
||||||
have_any_perms_changed = True
|
|
||||||
|
|
||||||
if have_any_perms_changed:
|
|
||||||
flash("update_portfolio_members", portfolio=portfolio)
|
|
||||||
|
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for(
|
url_for(
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
|
||||||
from atst.domain.permission_sets import PermissionSets
|
from atst.domain.permission_sets import PermissionSets
|
||||||
from atst.routes.portfolios.index import permission_set_has_changed
|
|
||||||
|
|
||||||
from tests.factories import PortfolioFactory, PortfolioRoleFactory, UserFactory
|
from tests.factories import PortfolioFactory, PortfolioRoleFactory, UserFactory
|
||||||
|
|
||||||
@ -29,32 +28,6 @@ def test_member_table_access(client, user_session):
|
|||||||
assert "<select" not in view_resp.data.decode()
|
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):
|
def test_update_member_permissions(client, user_session):
|
||||||
portfolio = PortfolioFactory.create()
|
portfolio = PortfolioFactory.create()
|
||||||
rando = UserFactory.create()
|
rando = UserFactory.create()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user