Move template logic to route function
This commit is contained in:
parent
f89fb9d416
commit
762c111751
@ -7,6 +7,7 @@ from atst.models import Base, mixins
|
|||||||
from .types import Id
|
from .types import Id
|
||||||
|
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
|
from atst.utils import first_or_none
|
||||||
from atst.models.environment_role import EnvironmentRole
|
from atst.models.environment_role import EnvironmentRole
|
||||||
from atst.models.application import Application
|
from atst.models.application import Application
|
||||||
from atst.models.environment import Environment
|
from atst.models.environment import Environment
|
||||||
@ -111,6 +112,11 @@ class PortfolioRole(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
|
|||||||
else:
|
else:
|
||||||
return MEMBER_STATUSES["unknown"]
|
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
|
@property
|
||||||
def has_dod_id_error(self):
|
def has_dod_id_error(self):
|
||||||
return self.latest_invitation and self.latest_invitation.is_rejected_wrong_user
|
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.domain.common import Paginator
|
||||||
from atst.forms.portfolio import PortfolioForm
|
from atst.forms.portfolio import PortfolioForm
|
||||||
from atst.models.permissions import Permissions
|
from atst.models.permissions import Permissions
|
||||||
|
from atst.domain.permission_sets import PermissionSets
|
||||||
|
|
||||||
|
|
||||||
@portfolios_bp.route("/portfolios")
|
@portfolios_bp.route("/portfolios")
|
||||||
@ -22,6 +23,20 @@ def portfolios():
|
|||||||
return render_template("portfolios/blank_slate.html")
|
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")
|
@portfolios_bp.route("/portfolios/<portfolio_id>/admin")
|
||||||
def portfolio_admin(portfolio_id):
|
def portfolio_admin(portfolio_id):
|
||||||
portfolio = Portfolios.get_for_update_information(g.current_user, portfolio_id)
|
portfolio = Portfolios.get_for_update_information(g.current_user, portfolio_id)
|
||||||
@ -30,12 +45,14 @@ def portfolio_admin(portfolio_id):
|
|||||||
audit_events = AuditLog.get_portfolio_events(
|
audit_events = AuditLog.get_portfolio_events(
|
||||||
g.current_user, portfolio, pagination_opts
|
g.current_user, portfolio, pagination_opts
|
||||||
)
|
)
|
||||||
|
members_data = [serialize_member(member) for member in portfolio.members]
|
||||||
return render_template(
|
return render_template(
|
||||||
"portfolios/admin.html",
|
"portfolios/admin.html",
|
||||||
form=form,
|
form=form,
|
||||||
portfolio=portfolio,
|
portfolio=portfolio,
|
||||||
audit_events=audit_events,
|
audit_events=audit_events,
|
||||||
user=g.current_user,
|
user=g.current_user,
|
||||||
|
members_data=members_data,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,17 +35,17 @@
|
|||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for member in portfolio.members %}
|
{% for member_data in members_data %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class='name'>{{ member.user_name }}
|
<td class='name'>{{ member_data.member.user_name }}
|
||||||
{% if member.user == user %}
|
{% if member_data.member.user == user %}
|
||||||
<span class='you'>(<span class='green'>you</span>)</span>
|
<span class='you'>(<span class='green'>you</span>)</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
{% set heading_perms = ['edit_application', 'view_portfolio_funding', 'view_portfolio_reports', 'edit_portfolio_name'] %}
|
{% set heading_perms = [member_data.app_mgmt, member_data.funding, member_data.reporting, member_data.portfolio_mgmt] %}
|
||||||
|
|
||||||
{% for perm in heading_perms %}
|
{% for has_perm in heading_perms %}
|
||||||
{% if perm in member.permissions %}
|
{% if has_perm %}
|
||||||
<td class='green'>Edit Access</td>
|
<td class='green'>Edit Access</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
<td>View Only</td>
|
<td>View Only</td>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user