Update fixtures_domain_requests.py

This commit is contained in:
zandercymatics 2024-03-12 15:35:39 -06:00
parent 2df8713b96
commit ca1a79a97f
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7

View file

@ -1,6 +1,7 @@
import logging import logging
import random import random
from faker import Faker from faker import Faker
from django.db import transaction
from registrar.models import ( from registrar.models import (
User, User,
@ -184,6 +185,14 @@ class DomainRequestFixture:
logger.warning(e) logger.warning(e)
return return
# Lumped under .atomic to ensure we don't make redundant DB calls.
# This bundles them all together, and then saves it in a single call.
with transaction.atomic():
cls._create_domain_requests(users)
@classmethod
def _create_domain_requests(cls, users):
"""Creates DomainRequests given a list of users"""
for user in users: for user in users:
logger.debug("Loading domain requests for %s" % user) logger.debug("Loading domain requests for %s" % user)
for app in cls.DA: for app in cls.DA:
@ -211,8 +220,16 @@ class DomainFixture(DomainRequestFixture):
logger.warning(e) logger.warning(e)
return return
# Lumped under .atomic to ensure we don't make redundant DB calls.
# This bundles them all together, and then saves it in a single call.
with transaction.atomic():
# approve each user associated with `in review` status domains
DomainFixture._approve_domain_requests(users)
@staticmethod
def _approve_domain_requests(users):
"""Approves all provided domain requests if they are in the state in_review"""
for user in users: for user in users:
# approve one of each users in review status domains
domain_request = DomainRequest.objects.filter( domain_request = DomainRequest.objects.filter(
creator=user, status=DomainRequest.DomainRequestStatus.IN_REVIEW creator=user, status=DomainRequest.DomainRequestStatus.IN_REVIEW
).last() ).last()
@ -220,5 +237,13 @@ class DomainFixture(DomainRequestFixture):
# We don't want fixtures sending out real emails to # We don't want fixtures sending out real emails to
# fake email addresses, so we just skip that and log it instead # fake email addresses, so we just skip that and log it instead
# All approvals require an investigator, so if there is none,
# assign one.
if domain_request.investigator is None:
# All "users" in fixtures have admin perms per prior config.
# No need to check for that.
domain_request.investigator = random.choice(users) # nosec
domain_request.approve(send_email=False) domain_request.approve(send_email=False)
domain_request.save() domain_request.save()