Merge pull request #716 from dod-ccpo/portfolio-admin-users-table
Portfolio admin users table
This commit is contained in:
@@ -7,6 +7,7 @@ from atst.models import Base, mixins
|
||||
from .types import Id
|
||||
|
||||
from atst.database import db
|
||||
from atst.utils import first_or_none
|
||||
from atst.models.environment_role import EnvironmentRole
|
||||
from atst.models.application import Application
|
||||
from atst.models.environment import Environment
|
||||
@@ -111,6 +112,11 @@ class PortfolioRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
|
||||
else:
|
||||
return MEMBER_STATUSES["unknown"]
|
||||
|
||||
def has_permission_set(self, perm_set_name):
|
||||
return first_or_none(
|
||||
lambda prms: prms.name == perm_set_name, self.permission_sets
|
||||
)
|
||||
|
||||
@property
|
||||
def has_dod_id_error(self):
|
||||
return self.latest_invitation and self.latest_invitation.is_rejected_wrong_user
|
||||
|
@@ -10,6 +10,7 @@ from atst.domain.authz import Authorization
|
||||
from atst.domain.common import Paginator
|
||||
from atst.forms.portfolio import PortfolioForm
|
||||
from atst.models.permissions import Permissions
|
||||
from atst.domain.permission_sets import PermissionSets
|
||||
|
||||
|
||||
@portfolios_bp.route("/portfolios")
|
||||
@@ -22,6 +23,20 @@ def portfolios():
|
||||
return render_template("portfolios/blank_slate.html")
|
||||
|
||||
|
||||
def serialize_member(member):
|
||||
return {
|
||||
"member": member,
|
||||
"app_mgmt": member.has_permission_set(
|
||||
PermissionSets.EDIT_PORTFOLIO_APPLICATION_MANAGEMENT
|
||||
),
|
||||
"funding": member.has_permission_set(PermissionSets.EDIT_PORTFOLIO_FUNDING),
|
||||
"reporting": member.has_permission_set(PermissionSets.EDIT_PORTFOLIO_REPORTS),
|
||||
"portfolio_mgmt": member.has_permission_set(
|
||||
PermissionSets.EDIT_PORTFOLIO_ADMIN
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@portfolios_bp.route("/portfolios/<portfolio_id>/admin")
|
||||
def portfolio_admin(portfolio_id):
|
||||
portfolio = Portfolios.get_for_update_information(g.current_user, portfolio_id)
|
||||
@@ -30,11 +45,14 @@ def portfolio_admin(portfolio_id):
|
||||
audit_events = AuditLog.get_portfolio_events(
|
||||
g.current_user, portfolio, pagination_opts
|
||||
)
|
||||
members_data = [serialize_member(member) for member in portfolio.members]
|
||||
return render_template(
|
||||
"portfolios/admin.html",
|
||||
form=form,
|
||||
portfolio=portfolio,
|
||||
audit_events=audit_events,
|
||||
user=g.current_user,
|
||||
members_data=members_data,
|
||||
)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user