diff --git a/templates/applications/settings.html b/templates/applications/settings.html
index 68a84965..dcf87520 100644
--- a/templates/applications/settings.html
+++ b/templates/applications/settings.html
@@ -5,6 +5,7 @@
{% from "components/icon.html" import Icon %}
{% import "applications/fragments/new_member_modal_content.html" as member_steps %}
{% from "applications/fragments/member_perms_form_fields.html" import MemberPermsFields %}
+{% from "portfolios/applications/fragments/members.html" import MemberManagementTemplate %}
{% from "components/modal.html" import Modal %}
{% from "components/multi_step_modal_form.html" import MultiStepModalForm %}
{% from "components/pagination.html" import Pagination %}
@@ -73,150 +74,11 @@
{% endif %}
- {% if not application.members %}
- {% set user_can_invite = user_can(permissions.CREATE_APPLICATION_MEMBER) %}
-
-
-
{{ ("portfolios.applications.team_settings.blank_slate.title" | translate) }}
-
- {{ Icon('avatar') }}
-
- {% if not user_can_invite %}
-
{{ ("portfolios.applications.team_settings.blank_slate.sub_message" | translate) }}
- {% endif %}
-
- {% if user_can_invite %}
- {% set new_member_modal_name = "add-app-mem" %}
-
- {{ "portfolios.applications.team_settings.blank_slate.action_label" | translate }}
-
- {{ MultiStepModalForm(
- name=new_member_modal_name,
- form=new_member_form,
- form_action=url_for("applications.create_member", application_id=application.id),
- steps=[
- member_steps.MemberStepOne(new_member_form),
- member_steps.MemberStepTwo(new_member_form, application)
- ],
- ) }}
- {% endif %}
-
-
- {% else %}
-
-
-
-
- {% if g.matchesPath("application-members") %}
- {% include "fragments/flash.html" %}
- {% endif %}
- {% for member in members %}
- {% set modal_name = "edit_member-{}".format(loop.index) %}
- {% call Modal(modal_name) %}
-
-
-
-
- {% endcall %}
-
- {% if user_can(permissions.DELETE_APPLICATION_MEMBER) and member.role_status == 'pending' %}
- {% set revoke_invite_modal = "revoke_invite_{}".format(member.role_id) %}
- {% call Modal(name=revoke_invite_modal, dismissable=True) %}
-
- {% endcall %}
- {% endif %}
- {% endfor %}
-
-
-
- Member |
- Project Permissions |
- Environment Access |
- |
-
-
-
- {% for member in members %}
- {% set modal_name = "edit_member-{}".format(loop.index) %}
-
-
- {{ member.user_name }}
-
- {{ Icon('edit') }}
-
-
- {% if member.role_status == 'pending' %}
- INVITE PENDING
- {% endif %}
-
- |
-
-
- {% 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.DELETE_APPLICATION_MEMBER) and member.role_status == 'pending' %}
- {% set revoke_invite_modal = "revoke_invite_{}".format(member.role_id) %}
- Resend Invite
- {{ 'invites.revoke.button' | translate }}
- {% endif %}
- |
-
- {% endfor %}
-
-
-
-
- {% if user_can(permissions.CREATE_APPLICATION_MEMBER) %}
- {% import "applications/fragments/new_member_modal_content.html" as member_steps %}
- {{ MultiStepModalForm(
- name=new_member_modal_name,
- form=new_member_form,
- form_action=url_for("applications.create_member", application_id=application.id),
- steps=[
- member_steps.MemberStepOne(new_member_form),
- member_steps.MemberStepTwo(new_member_form, application)
- ],
- ) }}
- {% endif %}
-
- {% endif %}
+ {{ MemberManagementTemplate(
+ application,
+ members,
+ new_member_form,
+ user_can(permissions.CREATE_APPLICATION_MEMBER)) }}
{{ 'common.resource_names.environments' | translate }}
diff --git a/templates/portfolios/applications/fragments/members.html b/templates/portfolios/applications/fragments/members.html
new file mode 100644
index 00000000..9b968693
--- /dev/null
+++ b/templates/portfolios/applications/fragments/members.html
@@ -0,0 +1,142 @@
+{% from "components/alert.html" import Alert %}
+{% from "components/icon.html" import Icon %}
+{% import "fragments/applications/new_member_modal_content.html" as member_steps %}
+{% from "fragments/applications/member_perms_form_fields.html" import MemberPermsFields %}
+{% from "components/modal.html" import Modal %}
+{% from "components/multi_step_modal_form.html" import MultiStepModalForm %}
+{% from "components/save_button.html" import SaveButton %}
+
+{% macro MemberManagementTemplate(
+ application,
+ members,
+ new_member_form,
+ user_can_create_app_member=False
+) %}
+
+ {% if not application.members %}
+
+
{{ ("portfolios.applications.team_settings.blank_slate.title" | translate) }}
+
+ {{ Icon('avatar') }}
+
+ {% if not user_can_create_app_member %}
+
{{ ("portfolios.applications.team_settings.blank_slate.sub_message" | translate) }}
+ {% endif %}
+
+ {% if user_can_create_app_member %}
+ {% set new_member_modal_name = "add-app-mem" %}
+
+ {{ "portfolios.applications.team_settings.blank_slate.action_label" | translate }}
+
+ {{ MultiStepModalForm(
+ name=new_member_modal_name,
+ form=new_member_form,
+ form_action=url_for("applications.create_member", application_id=application.id),
+ steps=[
+ member_steps.MemberStepOne(new_member_form),
+ member_steps.MemberStepTwo(new_member_form, application)
+ ],
+ ) }}
+ {% endif %}
+
+
+ {% else %}
+
+
+
+
+ {% if g.matchesPath("application-members") %}
+ {% include "fragments/flash.html" %}
+ {% endif %}
+ {% for member in members %}
+ {% set modal_name = "edit_member-{}".format(loop.index) %}
+ {% call Modal(modal_name) %}
+
+
+
+
+ {% endcall %}
+ {% endfor %}
+
+
+
+ Member |
+ Project Permissions |
+ Environment Access |
+ |
+
+
+
+ {% for member in members %}
+ {% set modal_name = "edit_member-{}".format(loop.index) %}
+
+
+ {{ member.user_name }}
+
+ {{ Icon('edit') }}
+
+
+ {% if member.role_status == 'pending' %}
+ INVITE PENDING
+ {% endif %}
+
+ |
+
+
+ {% 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 member.role_status == 'pending' %}
+ Resend Invite
+ Revoke Invite
+ {% endif %}
+ |
+
+ {% endfor %}
+
+
+
+
+ {% if user_can_create_app_member %}
+ {% import "fragments/applications/new_member_modal_content.html" as member_steps %}
+ {{ MultiStepModalForm(
+ name=new_member_modal_name,
+ form=new_member_form,
+ form_action=url_for("applications.create_member", application_id=application.id),
+ steps=[
+ member_steps.MemberStepOne(new_member_form),
+ member_steps.MemberStepTwo(new_member_form, application)
+ ],
+ ) }}
+ {% endif %}
+
+ {% endif %}
+
+{% endmacro %}