diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py
index a0bb30d8..8e9ee64b 100644
--- a/atst/routes/applications/settings.py
+++ b/atst/routes/applications/settings.py
@@ -94,8 +94,8 @@ def get_form_permission_value(member, edit_perm_set):
return PermissionSets.VIEW_APPLICATION
-def get_team_form(application):
- team_data = []
+def get_members_data(application):
+ members_data = []
for member in application.members:
permission_sets = {
"perms_team_mgmt": get_form_permission_value(
@@ -117,7 +117,7 @@ def get_team_form(application):
}
for role in roles
]
- team_data.append(
+ members_data.append(
{
"role_id": member.id,
"user_name": member.user_name,
@@ -126,7 +126,7 @@ def get_team_form(application):
}
)
- return TeamForm(data={"members": team_data})
+ return members_data
def get_new_member_form(application):
@@ -144,8 +144,8 @@ def render_settings_page(application, **kwargs):
new_env_form = EditEnvironmentForm()
pagination_opts = Paginator.get_pagination_opts(http_request)
audit_events = AuditLog.get_application_events(application, pagination_opts)
- team_form = get_team_form(application)
new_member_form = get_new_member_form(application)
+ members = get_members_data(application)
if "application_form" not in kwargs:
kwargs["application_form"] = ApplicationForm(
@@ -159,8 +159,8 @@ def render_settings_page(application, **kwargs):
members_form=members_form,
new_env_form=new_env_form,
audit_events=audit_events,
- team_form=team_form,
new_member_form=new_member_form,
+ members=members,
**kwargs,
)
diff --git a/styles/components/_portfolio_layout.scss b/styles/components/_portfolio_layout.scss
index 88069f14..5c48422d 100644
--- a/styles/components/_portfolio_layout.scss
+++ b/styles/components/_portfolio_layout.scss
@@ -139,6 +139,9 @@
}
table {
+ margin: 0;
+ width: 100%;
+
thead {
th:first-child {
padding-left: 3 * $gap;
@@ -282,6 +285,13 @@
.application-content {
.subheading {
@include subheading;
+ position: relative;
+
+ .icon-link {
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
}
.panel {
diff --git a/templates/fragments/applications/edit_team.html b/templates/fragments/applications/edit_team.html
deleted file mode 100644
index 0f1bcb59..00000000
--- a/templates/fragments/applications/edit_team.html
+++ /dev/null
@@ -1,88 +0,0 @@
-{% from "components/options_input.html" import OptionsInput %}
-{% from "components/toggle_list.html" import ToggleButton, ToggleSection %}
-
-{{ team_form.csrf_token }}
-
-{% for member_form in team_form.members %}
- {% set delete_modal_id = "delete-user-{}".format(member_form.id) %}
- {% set environment_roles_form = member_form.environment_roles %}
- {% set permissions_form = member_form.permission_sets %}
-
-
-
-
-
-
- {{ member_form.user_name.data }}
-
-
-
{{ OptionsInput(permissions_form.perms_team_mgmt, label=False, watch=True) }}
-
{{ OptionsInput(permissions_form.perms_env_mgmt, label=False, watch=True) }}
-
{{ OptionsInput(permissions_form.perms_del_env, label=False, watch=True) }}
-
- {% set open_html %}
- {{ "portfolios.applications.team_settings.environments" | translate }} ({{ environment_roles_form | length }}) {{ Icon('caret_down') }}
- {% endset %}
-
- {% set close_html %}
- {{ "portfolios.applications.team_settings.environments" | translate }} ({{ environment_roles_form | length }}) {{ Icon('caret_up') }}
- {% endset %}
-
- {{
- ToggleButton(
- open_html=open_html,
- close_html=close_html,
- section_name="environments"
- )
- }}
-
-
- {% call ToggleSection(section_name="environments") %}
-
- {% for environment_form in environment_roles_form %}
-
-
-
-
-
- {{ environment_form.environment_name.data }}
-
-
-
-
-
-
- {{ Icon("edit") }}
-
-
-
-
-
- {{ environment_form.role.label }}
- {{ environment_form.role(**{"v-on:change": "radioChange", "class": "member-list____role-select__radio"}) }}
-
- {{ "common.close" | translate }}
-
- {{ environment_form.environment_id() }}
-
-
-
-
- {% endfor %}
-
-
- {% endcall %}
- {{ member_form.role_id() }}
-
-
-{% endfor %}
diff --git a/templates/fragments/applications/read_only_team.html b/templates/fragments/applications/read_only_team.html
deleted file mode 100644
index 66d6947a..00000000
--- a/templates/fragments/applications/read_only_team.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{% from "components/toggle_list.html" import ToggleButton, ToggleSection %}
-
-{% for member in team_form.members %}
- {% set user_permissions = [member.permission_sets.perms_team_mgmt, member.permission_sets.perms_env_mgmt, member.permission_sets.perms_del_env] %}
-
- {% macro PermissionField(value) %}
-
{{ value }}
- {% endmacro %}
-
-
-
-
-
{{ member.user_name.data }}
- {% for permission in user_permissions %}
- {% set perm = dict(permission.choices).get(permission.data) %}
- {{ PermissionField(perm) }}
- {% endfor %}
-
- {% set open_html %}
- {{ "portfolios.applications.team_settings.environments" | translate }} ({{ member.environment_roles | length }}) {{ Icon('caret_down') }}
- {% endset %}
-
- {% set close_html %}
- {{ "portfolios.applications.team_settings.environments" | translate }} ({{ member.environment_roles | length }}) {{ Icon('caret_up') }}
- {% endset %}
-
- {{
- ToggleButton(
- open_html=open_html,
- close_html=close_html,
- section_name="environments"
- )
- }}
-
-
- {% call ToggleSection(section_name="environments") %}
-
- {% for environment in member.environment_roles %}
-
- {{ environment.environment_name.data }}
-
- {% endfor %}
-
- {% endcall %}
-
-
-{% endfor %}
diff --git a/templates/portfolios/applications/settings.html b/templates/portfolios/applications/settings.html
index 6b7134ec..574dd0b9 100644
--- a/templates/portfolios/applications/settings.html
+++ b/templates/portfolios/applications/settings.html
@@ -98,100 +98,49 @@
{% else %}
-
-
-
-
- {% if user_can(permissions.DELETE_APPLICATION_MEMBER) %}
- {% for member_form in team_form.members %}
- {% set delete_modal_id = "delete-user-{}".format(member_form.id) %}
- {% call Modal(name=delete_modal_id) %}
-
- {{ "portfolios.applications.remove_member.header" | translate }}
-
-
- {{
- Alert(
- title=("components.modal.destructive_title" | translate),
- message=("portfolios.applications.remove_member.alert.message" | translate({"user_name": member_form.user_name.data})),
- level="warning"
- )
- }}
-
- {{
- DeleteConfirmation(
- modal_id=delete_modal_id,
- delete_text=('portfolios.applications.remove_member.button' | translate),
- delete_action=url_for('applications.remove_member', application_id=application.id, application_role_id=member_form.data.role_id),
- form=member_form
- )
- }}
- {% endcall %}
- {% endfor %}
- {% endif %}
+
+ {% if g.matchesPath("application-members") %}
+ {% include "fragments/flash.html" %}
+ {% endif %}
+
+
+
+ Member
+ Project Permissions
+ Environment Access
+
+
+
+ {% for member in members %}
+
+ {{ member.user_name }}
+
+ {% for perm, value in member.permission_sets.items() %}
+ {{ ("portfolios.applications.members.{}.{}".format(perm, value)) | translate }}
+ {% endfor %}
+
+
+ {% for env in member.environment_roles %}
+ {{ env.environment_name }}{% if not env == member.environment_roles[-1]%},{% endif %}
+ {% endfor %}
+
+
+ {% endfor %}
+
+
+
{% if user_can(permissions.CREATE_APPLICATION_MEMBER) %}
{% import "fragments/applications/new_member_modal_content.html" as member_steps %}
diff --git a/translations.yaml b/translations.yaml
index a402ab4d..4060ece1 100644
--- a/translations.yaml
+++ b/translations.yaml
@@ -311,6 +311,7 @@ portfolios:
settings_heading: Application Settings
settings:
name_description: Name and Description
+ team_members: Team Members
team_settings:
blank_slate:
action_label: Invite a new team member
@@ -323,7 +324,6 @@ portfolios:
environment_management: Environment Management
team_management: Team Management
title: '{application_name} Team'
- subheading: Team Settings
title: '{application_name} Team Settings'
add_to_environment: Add to existing environment
team_text: Team
@@ -335,6 +335,15 @@ portfolios:
manage_envs: 'Allow member to add and rename environments within the application.'
delete_envs: 'Allow member to delete environments within the application.'
manage_team: 'Allow member to add, update, and remove members from the application team.'
+ perms_team_mgmt:
+ view_application: View Team
+ edit_application_team: Edit Team
+ perms_env_mgmt:
+ view_application: View Environments
+ edit_application_environments: Edit Environments
+ perms_del_env:
+ view_application: ""
+ delete_application_environments: Delete Application
index:
empty:
start_button: Start a new JEDI portfolio