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") %}