diff --git a/src/registrar/models/user_portfolio_permission.py b/src/registrar/models/user_portfolio_permission.py index 6acd651db..847df7857 100644 --- a/src/registrar/models/user_portfolio_permission.py +++ b/src/registrar/models/user_portfolio_permission.py @@ -1,11 +1,11 @@ from django.db import models from django.forms import ValidationError +from registrar.models.user_domain_role import UserDomainRole from registrar.utility.waffle import flag_is_active_for_user from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices from .utility.time_stamped_model import TimeStampedModel from django.contrib.postgres.fields import ArrayField - class UserPortfolioPermission(TimeStampedModel): """This is a linking table that connects a user with a role on a portfolio.""" @@ -67,6 +67,16 @@ class UserPortfolioPermission(TimeStampedModel): def __str__(self): return f"User '{self.user}' on Portfolio '{self.portfolio}' " f"" if self.roles else "" + def get_managed_domains_count(self): + """Return the count of domains managed by the user for this portfolio.""" + # Filter the UserDomainRole model to get domains where the user has a manager role + managed_domains = UserDomainRole.objects.filter( + user=self.user, + role=UserDomainRole.Roles.MANAGER, + domain__domain_info__portfolio=self.portfolio + ).count() + return managed_domains + def _get_portfolio_permissions(self): """ Retrieve the permissions for the user's portfolio roles. diff --git a/src/registrar/templates/includes/member_domain_mgmt.html b/src/registrar/templates/includes/member_domain_mgmt.html new file mode 100644 index 000000000..34f8bf5e6 --- /dev/null +++ b/src/registrar/templates/includes/member_domain_mgmt.html @@ -0,0 +1,6 @@ +

Assigned domains

+{% if domain_count > 0 %} +

{{domain_count}}

+{% else %} +

This member does not manage any domains.{% if editable %} To assign this member a domain, click "Manage".{% endif %}

+{% endif %} diff --git a/src/registrar/templates/includes/summary_item.html b/src/registrar/templates/includes/summary_item.html index fbe392c4d..aae7b8cf9 100644 --- a/src/registrar/templates/includes/summary_item.html +++ b/src/registrar/templates/includes/summary_item.html @@ -26,6 +26,8 @@ {% endif %} {% if permissions %} {% include "includes/member_permissions.html" with permissions=value %} + {% elif domain_mgmt %} + {% include "includes/member_domain_mgmt.html" with domain_count=value %} {% elif address %} {% include "includes/organization_address.html" with organization=value %} {% elif contact %} diff --git a/src/registrar/templates/portfolio_member.html b/src/registrar/templates/portfolio_member.html index 718970818..4cb846b5a 100644 --- a/src/registrar/templates/portfolio_member.html +++ b/src/registrar/templates/portfolio_member.html @@ -68,12 +68,10 @@ {% include "includes/summary_item.html" with title='Member access and permissions' permissions='true' value=portfolio_invitation edit_link=edit_url editable=has_edit_members_portfolio_permission %} {% endif %} - {% if has_any_domains_portfolio_permission %} - {% if has_edit_members_portfolio_permission %} - {% include "includes/summary_item.html" with title='Domain management' value="Asdasd" edit_link='#' editable='true' manage_button='true' %} - {% else %} - {% include "includes/summary_item.html" with title='Domain management' value="Asdasd" edit_link='#' editable='true' view_button='true' %} - {% endif %} + {% if portfolio_permission %} + {% include "includes/summary_item.html" with title='Domain management' domain_mgmt='true' value=portfolio_permission.get_managed_domains_count edit_link='#' editable=has_edit_members_portfolio_permission manage_button='true' %} + {% else %} + {% include "includes/summary_item.html" with title='Domain management' domain_mgmt='true' value=0 edit_link='#' editable=has_edit_members_portfolio_permission manage_button='true' %} {% endif %}