mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-19 02:49:21 +02:00
Update populate_first_ready.py
This commit is contained in:
parent
69fc902fc4
commit
fe29eaa9fb
1 changed files with 27 additions and 9 deletions
|
@ -12,6 +12,12 @@ logger = logging.getLogger(__name__)
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Loops through each valid Domain object and updates its first_created value"
|
help = "Loops through each valid Domain object and updates its first_created value"
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.to_update: List[Domain] = []
|
||||||
|
self.failed_to_update: List[Domain] = []
|
||||||
|
self.skipped: List[Domain] = []
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
def add_arguments(self, parser):
|
||||||
"""Adds command line arguments"""
|
"""Adds command line arguments"""
|
||||||
parser.add_argument("--debug", action=argparse.BooleanOptionalAction)
|
parser.add_argument("--debug", action=argparse.BooleanOptionalAction)
|
||||||
|
@ -19,14 +25,10 @@ class Command(BaseCommand):
|
||||||
def handle(self, **kwargs):
|
def handle(self, **kwargs):
|
||||||
"""Loops through each valid Domain object and updates its first_created value"""
|
"""Loops through each valid Domain object and updates its first_created value"""
|
||||||
debug = kwargs.get("debug")
|
debug = kwargs.get("debug")
|
||||||
|
# Get all valid domains
|
||||||
valid_states = [Domain.State.READY, Domain.State.ON_HOLD, Domain.State.DELETED]
|
valid_states = [Domain.State.READY, Domain.State.ON_HOLD, Domain.State.DELETED]
|
||||||
domains = Domain.objects.filter(first_ready=None, state__in=valid_states)
|
domains = Domain.objects.filter(first_ready=None, state__in=valid_states)
|
||||||
|
|
||||||
# Keep track of what we want to update, what failed, and what was skipped
|
|
||||||
to_update: List[Domain] = []
|
|
||||||
failed_to_update: List[Domain] = []
|
|
||||||
skipped: List[Domain] = []
|
|
||||||
|
|
||||||
# Code execution will stop here if the user prompts "N"
|
# Code execution will stop here if the user prompts "N"
|
||||||
TerminalHelper.prompt_for_execution(
|
TerminalHelper.prompt_for_execution(
|
||||||
system_exit_on_terminate=True,
|
system_exit_on_terminate=True,
|
||||||
|
@ -40,18 +42,34 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
for domain in domains:
|
for domain in domains:
|
||||||
try:
|
try:
|
||||||
update_first_ready_for_domain(domain, debug)
|
self.update_first_ready_for_domain(domain, debug)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
failed_to_update.append(domain)
|
self.failed_to_update.append(domain)
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
logger.error(
|
logger.error(
|
||||||
f"{TerminalColors.FAIL}"
|
f"{TerminalColors.FAIL}"
|
||||||
f"Failed to update {domain}"
|
f"Failed to update {domain}"
|
||||||
f"{TerminalColors.ENDC}"
|
f"{TerminalColors.ENDC}"
|
||||||
)
|
)
|
||||||
ScriptDataHelper.bulk_update_fields(Domain, to_update, ["first_ready"])
|
|
||||||
|
# Do a bulk update on all fields
|
||||||
|
ScriptDataHelper.bulk_update_fields(Domain, self.to_update, ["first_ready"])
|
||||||
|
|
||||||
# Log what happened
|
# Log what happened
|
||||||
TerminalHelper.log_script_run_summary(
|
TerminalHelper.log_script_run_summary(
|
||||||
to_update, failed_to_update, skipped, debug
|
self.to_update, self.failed_to_update, self.skipped, debug
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def update_first_ready_for_domain(self, domain: Domain, debug: bool):
|
||||||
|
"""Grabs the created_at field and associates it with the first_ready column.
|
||||||
|
Appends the result to the to_update list."""
|
||||||
|
created_at = domain.created_at
|
||||||
|
if created_at is not None:
|
||||||
|
domain.first_ready = domain.created_at
|
||||||
|
self.to_update.append(domain)
|
||||||
|
if debug:
|
||||||
|
logger.info(f"Updating {domain}")
|
||||||
|
else:
|
||||||
|
self.skipped.append(domain)
|
||||||
|
if debug:
|
||||||
|
logger.warning(f"Skipped updating {domain}")
|
Loading…
Add table
Add a link
Reference in a new issue