diff --git a/atst/models/application_role.py b/atst/models/application_role.py
index 9468896c..12c7a9c3 100644
--- a/atst/models/application_role.py
+++ b/atst/models/application_role.py
@@ -102,6 +102,37 @@ class ApplicationRole(
"portfolio": self.application.portfolio.name,
}
+ @property
+ def is_pending(self):
+ return self.status == Status.PENDING
+
+ @property
+ def is_active(self):
+ return self.status == Status.ACTIVE
+
+ @property
+ def display_status(self):
+ if (
+ self.is_pending
+ and self.latest_invitation
+ and self.latest_invitation.is_pending
+ ):
+ return "invite_pending"
+
+ elif (
+ self.is_pending
+ and self.latest_invitation
+ and self.latest_invitation.is_expired
+ ):
+ return "invite_expired"
+
+ elif self.is_active and any(
+ env_role.is_pending for env_role in self.environment_roles
+ ):
+ return "changes_pending"
+
+ return None
+
Index(
"application_role_user_application",
diff --git a/atst/models/environment_role.py b/atst/models/environment_role.py
index 37d1c17c..541b6d40 100644
--- a/atst/models/environment_role.py
+++ b/atst/models/environment_role.py
@@ -70,6 +70,10 @@ class EnvironmentRole(
def disabled(self):
return self.status == EnvironmentRole.Status.DISABLED
+ @property
+ def is_pending(self):
+ return self.status == EnvironmentRole.Status.PENDING
+
@property
def event_details(self):
return {
diff --git a/atst/routes/applications/settings.py b/atst/routes/applications/settings.py
index 3454c30e..c166223c 100644
--- a/atst/routes/applications/settings.py
+++ b/atst/routes/applications/settings.py
@@ -122,7 +122,7 @@ def get_members_data(application):
"user_name": member.user_name,
"permission_sets": permission_sets,
"environment_roles": environment_roles,
- "role_status": member.status.value,
+ "role_status": member.display_status,
"form": form,
"update_invite_form": update_invite_form,
}
diff --git a/styles/elements/_labels.scss b/styles/elements/_labels.scss
index d36ae027..8c044f8d 100644
--- a/styles/elements/_labels.scss
+++ b/styles/elements/_labels.scss
@@ -20,6 +20,10 @@
white-space: nowrap;
text-transform: uppercase;
+ &--default {
+ background-color: $color-gray-dark;
+ }
+
&--info {
background-color: $color-primary;
}
diff --git a/templates/applications/fragments/environments.html b/templates/applications/fragments/environments.html
index 23fa6f82..9e9a3ef8 100644
--- a/templates/applications/fragments/environments.html
+++ b/templates/applications/fragments/environments.html
@@ -54,7 +54,7 @@
{%- endif %}
{% if env['pending'] -%}
- {{ Label('exchange', 'Changes Pending', classes='label--below')}}
+ {{ Label(type="changes_pending", classes='label--below')}}
{% else %}
{{ "portfolios.applications.csp_link" | translate }} {{ Icon('link', classes="icon--tiny") }}
diff --git a/templates/applications/fragments/members.html b/templates/applications/fragments/members.html
index 825dba25..a8e8d80b 100644
--- a/templates/applications/fragments/members.html
+++ b/templates/applications/fragments/members.html
@@ -33,6 +33,8 @@
{% else %}
{% for member in members %}
+ {% set invite_pending = member.role_status == 'invite_pending' %}
+ {% set invite_expired = member.role_status == 'invite_expired' %}
{%- if user_can(permissions.EDIT_APPLICATION_MEMBER) %}
{% set modal_name = "edit_member-{}".format(loop.index) %}
{% call Modal(modal_name, classes="form-content--app-mem") %}
@@ -52,7 +54,7 @@
{% endcall %}
- {%- if member.role_status == 'pending' %}
+ {%- if invite_pending or invite_expired %}
{% set resend_invite_modal = "resend_invite-{}".format(member.role_id) %}
{% call Modal(resend_invite_modal, classes="form-content--app-mem") %}