From f4113a7c655593f38e7305c9840132819f67bea0 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Fri, 6 Dec 2024 13:52:46 -0500 Subject: [PATCH] member is only manager of domain --- .../src/js/getgov/table-edit-member-domains.js | 4 ++++ src/registrar/views/member_domains_edit_json.py | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/registrar/assets/src/js/getgov/table-edit-member-domains.js b/src/registrar/assets/src/js/getgov/table-edit-member-domains.js index e4d76b953..1c2f49c74 100644 --- a/src/registrar/assets/src/js/getgov/table-edit-member-domains.js +++ b/src/registrar/assets/src/js/getgov/table-edit-member-domains.js @@ -101,6 +101,10 @@ export class EditMemberDomainsTable extends BaseTable { console.log(dataObjects); // Map the id attributes of dataObjects to this.initialDomainAssignments this.initialDomainAssignments = dataObjects.map(obj => obj.id); + this.initialDomainAssignmentsOnlyMember = dataObjects + .filter(obj => obj.member_is_only_manager) + .map(obj => obj.id); + console.log(this.initialDomainAssignments); }) .catch(error => console.error('Error fetching domain assignments:', error)); diff --git a/src/registrar/views/member_domains_edit_json.py b/src/registrar/views/member_domains_edit_json.py index 3d06a9d85..1b3a8ed66 100644 --- a/src/registrar/views/member_domains_edit_json.py +++ b/src/registrar/views/member_domains_edit_json.py @@ -32,7 +32,8 @@ class PortfolioMemberDomainsEditJson(PortfolioMemberDomainsEditPermission, View) page_number = request.GET.get("page") page_obj = paginator.get_page(page_number) - domains = [self.serialize_domain(domain, request.user) for domain in page_obj.object_list] + member_id = request.GET.get("member_id") + domains = [self.serialize_domain(domain, member_id, request.user) for domain in page_obj.object_list] return JsonResponse( { @@ -92,7 +93,7 @@ class PortfolioMemberDomainsEditJson(PortfolioMemberDomainsEditPermission, View) sort_by = f"-{sort_by}" return queryset.order_by(sort_by) - def serialize_domain(self, domain, user): + def serialize_domain(self, domain, member_id, user): suborganization_name = None try: domain_info = domain.domain_info @@ -107,9 +108,18 @@ class PortfolioMemberDomainsEditJson(PortfolioMemberDomainsEditPermission, View) # Check if there is a UserDomainRole for this domain and user user_domain_role_exists = UserDomainRole.objects.filter(domain_id=domain.id, user=user).exists() view_only = not user_domain_role_exists or domain.state in [Domain.State.DELETED, Domain.State.ON_HOLD] + + # Check if the specified member is the only member assigned as manager of domain + only_member_assigned_to_domain = False + if member_id: + member_domain_role_count = UserDomainRole.objects.filter(domain_id=domain.id).count() + member_domain_role_exists = UserDomainRole.objects.filter(domain_id=domain.id, user_id=member_id).exists() + only_member_assigned_to_domain = member_domain_role_exists and member_domain_role_count == 1 + return { "id": domain.id, "name": domain.name, + "member_is_only_manager": only_member_assigned_to_domain, "expiration_date": domain.expiration_date, "state": domain.state, "state_display": domain.state_display(),