#3866 - Add Organization admins to the Organization overview page - [meoward] (#3928)

Added logic to existing summary_item.html
Added statement to pull portfolio admins in view, portfolios.py, for summary_item.html display
Changed porfolio_suborganization.html to reflect requirements of ticket
This commit is contained in:
Abe Alam 2025-07-18 10:10:46 -04:00 committed by GitHub
parent 033d628eac
commit aed8b9b2b7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 132 additions and 104 deletions

View file

@ -1,7 +1,9 @@
{% load static url_helpers %} {% load static url_helpers %}
{% if portfolio_first_section %} <section class="summary-item margin-top-2"> {% if portfolio_first_section %}
{% else %} <section class="summary-item margin-top-3"> <section class="summary-item margin-top-2">
{% else %}
<section class="summary-item margin-top-3">
{% endif %} {% endif %}
<hr class="" aria-hidden="true" /> <hr class="" aria-hidden="true" />
<div class="display-flex flex-justify"> <div class="display-flex flex-justify">
@ -20,15 +22,31 @@
{% else %} {% else %}
</h3> </h3>
{% endif %} {% endif %}
{# To display default styling for sub-header text and organization information in organization overview #}
{% if sub_header_text %} {% if sub_header_text %}
<h4 class="margin-bottom-0">{{ sub_header_text }}</h4> <h4 class="margin-bottom-0">{{ sub_header_text }}</h4>
{% if sub_header_text == "Organization Admins" %}
<ul class="usa-list">
{% for admin in portfolio_admins %}
<li>{{ admin.get_full_name|default:admin.username }}</li>
{% empty %}
<li>No admins assigned.</li>
{% endfor %}
</ul>
<h4 class="margin-bottom-2">Organization Name and Address</h4>
{% endif %} {% endif %}
{% endif %}
{% if permissions %} {% if permissions %}
{% include "includes/member_permissions_summary.html" with permissions=value %} {% include "includes/member_permissions_summary.html" with permissions=value %}
{% elif domain_mgmt %} {% elif domain_mgmt %}
{% include "includes/member_domain_management.html" with domain_count=value %} {% include "includes/member_domain_management.html" with domain_count=value %}
{% elif address %} {% elif address %}
{% include "includes/organization_address.html" with organization=value %} {% include "includes/organization_address.html" with organization=value %}
{% elif contact %} {% elif contact %}
{% if list %} {% if list %}
{% if value|length == 1 %} {% if value|length == 1 %}
@ -38,10 +56,7 @@
<dl class="usa-list usa-list--unstyled margin-top-0"> <dl class="usa-list usa-list--unstyled margin-top-0">
{% for item in value %} {% for item in value %}
<dt> <dt>
<h4 class="margin-bottom-05 padding-right-1">
<h4 class="
margin-bottom-05
padding-right-1">
Contact {{forloop.counter}} Contact {{forloop.counter}}
</h4> </h4>
</dt> </dt>
@ -63,6 +78,7 @@
{% else %} {% else %}
{% include "includes/contact.html" with contact=value %} {% include "includes/contact.html" with contact=value %}
{% endif %} {% endif %}
{% elif list %} {% elif list %}
{% if value|length == 1 %} {% if value|length == 1 %}
{% if users %} {% if users %}
@ -103,6 +119,7 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
{% elif domain_permissions %} {% elif domain_permissions %}
{% if value.permissions.all %} {% if value.permissions.all %}
{% if value.permissions|length == 1 %} {% if value.permissions|length == 1 %}
@ -115,6 +132,7 @@
</ul> </ul>
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if value.active_invitations.all %} {% if value.active_invitations.all %}
<h4 class="margin-bottom-05">Invited domain managers</h4> <h4 class="margin-bottom-05">Invited domain managers</h4>
<ul class="usa-list usa-list--unstyled margin-top-0"> <ul class="usa-list usa-list--unstyled margin-top-0">
@ -123,6 +141,7 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
{% else %} {% else %}
{% if custom_text_for_value_none %} {% if custom_text_for_value_none %}
<p class="margin-top-0 text-base-dark">{{ custom_text_for_value_none }}</p> <p class="margin-top-0 text-base-dark">{{ custom_text_for_value_none }}</p>
@ -159,6 +178,5 @@
</div> </div>
{% endif %} {% endif %}
{% endif %} {% endif %}
</div> </div>
</section> </section>

View file

@ -20,7 +20,7 @@
<div class="margin-top-2 tablet:grid-col-10"> <div class="margin-top-2 tablet:grid-col-10">
<h2 class="string-wrap margin-top-2">{{ portfolio }}</h2> <h2 class="string-wrap margin-top-2">{{ portfolio }}</h2>
{% url 'organization-info' as url %} {% url 'organization-info' as url %}
{% include "includes/summary_item.html" with title='Organization' value=portfolio address='true' edit_link=url editable=has_edit_portfolio_permission view_button='true' portfolio_first_section='true'%} {% include "includes/summary_item.html" with title='Organization' value=portfolio address='true' sub_header_text='Organization Admins' edit_link=url editable=has_edit_portfolio_permission view_button='true' portfolio_first_section='true' %}
{% url 'organization-senior-official' as url %} {% url 'organization-senior-official' as url %}
{% include "includes/summary_item.html" with title='Senior official' value=portfolio.senior_official contact='true' edit_link=url view_button='true' %} {% include "includes/summary_item.html" with title='Senior official' value=portfolio.senior_official contact='true' edit_link=url view_button='true' %}

View file

@ -212,6 +212,13 @@ class TestPortfolio(WebTest):
first_name="Saturn", last_name="Enceladus", title="Planet/Moon", email="spacedivision@igorville.com" first_name="Saturn", last_name="Enceladus", title="Planet/Moon", email="spacedivision@igorville.com"
) )
portfolio_admin = User.objects.create_user(
username="adminuser", first_name="Galileo", last_name="Galilei", email="admin@example.com"
)
UserPortfolioPermission.objects.create(
user=portfolio_admin, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
)
self.portfolio.senior_official = so self.portfolio.senior_official = so
self.portfolio.organization_name = "Hotel California" self.portfolio.organization_name = "Hotel California"
self.portfolio.city = "Los Angeles" self.portfolio.city = "Los Angeles"
@ -227,6 +234,8 @@ class TestPortfolio(WebTest):
# Organization overview page includes organization info and senior official details # Organization overview page includes organization info and senior official details
self.assertContains(response, "Los Angeles") self.assertContains(response, "Los Angeles")
self.assertContains(response, "spacedivision@igorville.com") self.assertContains(response, "spacedivision@igorville.com")
# Organization overview page includes portfolio admin
self.assertContains(response, "Galileo")
@less_console_noise_decorator @less_console_noise_decorator
def test_portfolio_organization_page_directs_to_org_detail_forms(self): def test_portfolio_organization_page_directs_to_org_detail_forms(self):

View file

@ -904,6 +904,7 @@ class PortfolioOrganizationView(DetailView):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
portfolio = self.request.session.get("portfolio") portfolio = self.request.session.get("portfolio")
context["has_edit_portfolio_permission"] = self.request.user.has_edit_portfolio_permission(portfolio) context["has_edit_portfolio_permission"] = self.request.user.has_edit_portfolio_permission(portfolio)
context["portfolio_admins"] = portfolio.portfolio_admin_users
return context return context
def get_object(self, queryset=None): def get_object(self, queryset=None):