diff --git a/src/registrar/assets/js/get-gov.js b/src/registrar/assets/js/get-gov.js index 3b0da926c..7c7b3655e 100644 --- a/src/registrar/assets/js/get-gov.js +++ b/src/registrar/assets/js/get-gov.js @@ -1872,17 +1872,17 @@ class MembersTable extends LoadTableBase { loadTable(page, sortBy = this.currentSortBy, order = this.currentOrder, scroll = this.scrollToTable, status = this.currentStatus, searchTerm =this.currentSearchTerm, portfolio = this.portfolioValue) { // --------- SEARCH - // let searchParams = new URLSearchParams( - // { - // "page": page, - // "sort_by": sortBy, - // "order": order, - // "status": status, - // "search_term": searchTerm - // } - // ); - // if (portfolio) - // searchParams.append("portfolio", portfolio) + let searchParams = new URLSearchParams( + { + "page": page, + "sort_by": sortBy, + "order": order, + "status": status, + "search_term": searchTerm + } + ); + if (portfolio) + searchParams.append("portfolio", portfolio) // --------- FETCH DATA @@ -1896,8 +1896,8 @@ class MembersTable extends LoadTableBase { if (!baseUrlValue) { return; } - - let url = `${baseUrlValue}?${searchParams.toString()}` + + let url = `${baseUrlValue}?${searchParams.toString()}` //TODO: uncomment for search function fetch(url) .then(response => response.json()) .then(data => { @@ -1913,17 +1913,21 @@ class MembersTable extends LoadTableBase { const memberList = document.querySelector('.members__table tbody'); memberList.innerHTML = ''; - data.members.forEach(member => { - // const actionUrl = domain.action_url; + if (data.members) + { + data.members.forEach(member => { + // const actionUrl = domain.action_url; + const member_name = member.name; + const last_active = member.last_active; const row = document.createElement('tr'); row.innerHTML = ` - TEMP -- member ID + ${member_name} - - ${member.id} + + ${last_active} `; @@ -1939,6 +1943,26 @@ class MembersTable extends LoadTableBase { memberList.appendChild(row); }); + } + else + { + //TODO: error message? + const row = document.createElement('tr'); + row.innerHTML = ` + + ERROR + + + ERROR + + `; + + memberList.appendChild(row); + } + + + + // initialize tool tips immediately after the associated DOM elements are added initializeTooltips(); diff --git a/src/registrar/config/urls.py b/src/registrar/config/urls.py index a428f74db..f7bd65185 100644 --- a/src/registrar/config/urls.py +++ b/src/registrar/config/urls.py @@ -22,18 +22,20 @@ from registrar.views.report_views import ( ExportDataTypeUser, ) -from registrar.views.domain_request import Step +# --jsons from registrar.views.domain_requests_json import get_domain_requests_json -from registrar.views.transfer_user import TransferUserView +from registrar.views.domains_json import get_domains_json +from registrar.views.portfolio_members_json import get_portfolio_members_json from registrar.views.utility.api_views import ( get_senior_official_from_federal_agency_json, get_federal_and_portfolio_types_from_federal_agency_json, ) -from registrar.views.domains_json import get_domains_json + +from registrar.views.domain_request import Step +from registrar.views.transfer_user import TransferUserView from registrar.views.utility import always_404 from api.views import available, get_current_federal, get_current_full - DOMAIN_REQUEST_NAMESPACE = views.DomainRequestWizard.URL_NAMESPACE domain_request_urls = [ path("", views.DomainRequestWizard.as_view(), name=""), @@ -280,7 +282,7 @@ urlpatterns = [ ), path("get-domains-json/", get_domains_json, name="get_domains_json"), path("get-domain-requests-json/", get_domain_requests_json, name="get_domain_requests_json"), - path("get-portfolio-members-json/", get_domains_json, name="get_portfolio_members_json"), + path("get-portfolio-members-json/", get_portfolio_members_json, name="get_portfolio_members_json"), ] # Djangooidc strips out context data from that context, so we define a custom error diff --git a/src/registrar/management/commands/create_federal_portfolio.py b/src/registrar/management/commands/create_federal_portfolio.py index d05a2911b..96bbc0670 100644 --- a/src/registrar/management/commands/create_federal_portfolio.py +++ b/src/registrar/management/commands/create_federal_portfolio.py @@ -68,6 +68,9 @@ class Command(BaseCommand): if parse_domains or both: self.handle_portfolio_domains(portfolio, federal_agency) + if parse_domains or both: + self.handle_portfolio_members(portfolio, federal_agency) + def create_or_modify_portfolio(self, federal_agency): """Creates or modifies a portfolio record based on a federal agency.""" portfolio_args = { @@ -253,3 +256,12 @@ class Command(BaseCommand): DomainInformation.objects.bulk_update(domain_infos, ["portfolio", "sub_organization"]) message = f"Added portfolio '{portfolio}' to {len(domain_infos)} domains" TerminalHelper.colorful_logger(logger.info, TerminalColors.OKGREEN, message) + + + def handle_portfolio_members(self, portfolio: Portfolio, federal_agency: FederalAgency): + """ + Associate portfolio with members for a federal agency. + Updates all relevant member records. + """ + # TODO: future ticket? + diff --git a/src/registrar/management/commands/utility/terminal_helper.py b/src/registrar/management/commands/utility/terminal_helper.py index fa7cde683..d5ee478f7 100644 --- a/src/registrar/management/commands/utility/terminal_helper.py +++ b/src/registrar/management/commands/utility/terminal_helper.py @@ -7,7 +7,6 @@ from django.db.models.manager import BaseManager from typing import List from registrar.utility.enums import LogCode - logger = logging.getLogger(__name__) diff --git a/src/registrar/templates/includes/members_table.html b/src/registrar/templates/includes/members_table.html index 95e13aebf..f43d22301 100644 --- a/src/registrar/templates/includes/members_table.html +++ b/src/registrar/templates/includes/members_table.html @@ -17,7 +17,7 @@ TODO: future ticket? ===================== --> - + {% if portfolio_members_count and portfolio_members_count > 0 %}