Add suborg info to domains and requests

This commit is contained in:
zandercymatics 2024-08-30 09:49:43 -06:00
parent db16ba284b
commit 02bc0cba1a
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
2 changed files with 24 additions and 12 deletions

View file

@ -185,11 +185,16 @@ class Command(BaseCommand):
if not domain_requests.exists(): if not domain_requests.exists():
message = "Portfolios not added to domain requests: no valid records found" message = "Portfolios not added to domain requests: no valid records found"
TerminalHelper.colorful_logger(logger.info, TerminalColors.YELLOW, message) TerminalHelper.colorful_logger(logger.info, TerminalColors.YELLOW, message)
else: return None
# Get all suborg information and store it in a dict to avoid doing a db call
suborgs = Suborganization.objects.filter(portfolio=portfolio).in_bulk(field_name="name")
for domain_request in domain_requests: for domain_request in domain_requests:
domain_request.portfolio = portfolio domain_request.portfolio = portfolio
if domain_request.organization_name in suborgs:
domain_request.sub_organization = suborgs.get(domain_request.organization_name)
DomainRequest.objects.bulk_update(domain_requests, ["portfolio"]) DomainRequest.objects.bulk_update(domain_requests, ["portfolio", "sub_organization"])
message = f"Added portfolio '{portfolio}' to {len(domain_requests)} domain requests" message = f"Added portfolio '{portfolio}' to {len(domain_requests)} domain requests"
TerminalHelper.colorful_logger(logger.info, TerminalColors.OKGREEN, message) TerminalHelper.colorful_logger(logger.info, TerminalColors.OKGREEN, message)
@ -202,10 +207,15 @@ class Command(BaseCommand):
if not domain_infos.exists(): if not domain_infos.exists():
message = "Portfolios not added to domains: no valid records found" message = "Portfolios not added to domains: no valid records found"
TerminalHelper.colorful_logger(logger.info, TerminalColors.YELLOW, message) TerminalHelper.colorful_logger(logger.info, TerminalColors.YELLOW, message)
else: return None
# Get all suborg information and store it in a dict to avoid doing a db call
suborgs = Suborganization.objects.filter(portfolio=portfolio).in_bulk(field_name="name")
for domain_info in domain_infos: for domain_info in domain_infos:
domain_info.portfolio = portfolio domain_info.portfolio = portfolio
if domain_info.organization_name in suborgs:
domain_info.sub_organization = suborgs.get(domain_info.organization_name)
DomainInformation.objects.bulk_update(domain_infos, ["portfolio"]) DomainInformation.objects.bulk_update(domain_infos, ["portfolio", "sub_organization"])
message = f"Added portfolio '{portfolio}' to {len(domain_infos)} domains" message = f"Added portfolio '{portfolio}' to {len(domain_infos)} domains"
TerminalHelper.colorful_logger(logger.info, TerminalColors.OKGREEN, message) TerminalHelper.colorful_logger(logger.info, TerminalColors.OKGREEN, message)

View file

@ -1490,6 +1490,7 @@ class TestCreateFederalPortfolio(TestCase):
self.domain_request.refresh_from_db() self.domain_request.refresh_from_db()
self.assertIsNotNone(self.domain_request.portfolio) self.assertIsNotNone(self.domain_request.portfolio)
self.assertEqual(self.domain_request.portfolio.federal_agency, self.federal_agency) self.assertEqual(self.domain_request.portfolio.federal_agency, self.federal_agency)
self.assertEqual(self.domain_request.sub_organization.name, "Testorg")
def test_handle_portfolio_domains(self): def test_handle_portfolio_domains(self):
"""Check portfolio association with domain information.""" """Check portfolio association with domain information."""
@ -1498,6 +1499,7 @@ class TestCreateFederalPortfolio(TestCase):
self.domain_info.refresh_from_db() self.domain_info.refresh_from_db()
self.assertIsNotNone(self.domain_info.portfolio) self.assertIsNotNone(self.domain_info.portfolio)
self.assertEqual(self.domain_info.portfolio.federal_agency, self.federal_agency) self.assertEqual(self.domain_info.portfolio.federal_agency, self.federal_agency)
self.assertEqual(self.domain_info.sub_organization.name, "Testorg")
def test_handle_parse_both(self): def test_handle_parse_both(self):
"""Ensure correct parsing of both requests and domains.""" """Ensure correct parsing of both requests and domains."""