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) }}
    - -
    - {% call ToggleSection(section_name="environments") %} - -
    - {% if user_can(permissions.DELETE_APPLICATION_MEMBER) %} - - {{ "portfolios.applications.remove_member.button" | translate }} - - {% endif %} -
    - {% 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 %} - -
    - {% call ToggleSection(section_name="environments") %} - - {% 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 %}
    - {{ 'portfolios.applications.team_settings.subheading' | translate }} + {{ 'portfolios.applications.settings.team_members' | translate }} + + {% set new_member_modal_name = "add-app-mem" %} + {% if user_can(permissions.CREATE_APPLICATION_MEMBER) %} + + {{ "portfolios.admin.add_new_member" | translate }} + {{ Icon("plus") }} + + {% endif %}
    - -
    -
    - {% if g.matchesPath("application-members") %} - {% include "fragments/flash.html" %} - {% endif %} -
    -
    -
    -
    - {{ "portfolios.applications.team_settings.section.title" | translate({ "application_name": application.name }) }} -

    Members ({{ team_form.members | length }})

    -
    -
    -
    -
    - -
    -
    -
    - {{ "common.name" | translate }} -
    -
    - {{ "portfolios.applications.team_settings.section.table.team_management" | translate }} -
    -
    - {{ "portfolios.applications.team_settings.section.table.environment_management" | translate }} -
    -
    - {{ "portfolios.applications.team_settings.section.table.delete_access" | translate }} -
    -
    -   -
    -
    -
      - {% if user_can(permissions.EDIT_APPLICATION_MEMBER) %} - {% include "fragments/applications/edit_team.html" %} - {% elif user_can(permissions.VIEW_APPLICATION_MEMBER) %} - {% include "fragments/applications/read_only_team.html" %} - {% endif %} -
    -
    - - -
    -
    -
    - - {% 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 %} + + + + + + + + + + {% for member in members %} + + + + + + {% endfor %} + +
    MemberProject PermissionsEnvironment Access
    {{ 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 %} +
    +
    {% 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