Signed-off-by: CocoByte <nicolle.leclair@gmail.com>
This commit is contained in:
CocoByte 2023-10-03 00:13:42 -06:00
parent e9c3c30ccc
commit 688b5742c9
No known key found for this signature in database
GPG key ID: BBFAA2526384C97F
3 changed files with 54 additions and 45 deletions

View file

@ -1,10 +1,8 @@
"""Load domain invitations for existing domains and their contacts."""
import csv
import logging
import argparse
from collections import defaultdict
from django_fsm import TransitionNotAllowed # type: ignore
from django.core.management import BaseCommand
@ -30,6 +28,7 @@ class termColors:
UNDERLINE = "\033[4m"
BackgroundLightYellow = "\033[103m"
# ----------------------------------------
# MAIN SCRIPT
# ----------------------------------------
@ -38,20 +37,17 @@ class Command(BaseCommand):
into main domain tables."""
def add_arguments(self, parser):
parser.add_argument("--debug", action=argparse.BooleanOptionalAction)
parser.add_argument(
"--limitParse", default=0, help="Sets max number of entries to load"
)
def handle( # noqa: C901
self,
**options,
):
"""Load the data files and create the DomainInvitations."""
sep = options.get("sep")
# grab command line arguments and store locally...
debug_on = options.get("debug")
@ -71,12 +67,13 @@ class Command(BaseCommand):
# track of total rows parsed)
total_rows_parsed = 0
logger.info(f"""{termColors.OKGREEN}
logger.info(
f"""{termColors.OKGREEN}
==========================
Beginning Data Transfer
==========================
{termColors.ENDC}""")
{termColors.ENDC}"""
)
for transition_entry in TransitionDomain.objects.all():
transition_domain_name = transition_entry.domain_name
@ -86,21 +83,29 @@ Beginning Data Transfer
try:
# DEBUG:
if debug_on:
logger.info(f"""{termColors.WARNING}
Processing Transition Domain: {transition_domain_name}, {transition_domain_status}{termColors.ENDC}""")
# for existing entry, update the status to the transition domain status
existingEntry = Domain.objects.get(
name=transition_domain_name
logger.info(
f"""{termColors.WARNING}
Processing Transition Domain: {transition_domain_name}, {transition_domain_status}
{termColors.ENDC}"""
)
# for existing entry, update the status to
# the transition domain status
existingEntry = Domain.objects.get(name=transition_domain_name)
current_state = existingEntry.state
# DEBUG:
if debug_on:
logger.info(f"""{termColors.WARNING}
> Found existing domain entry for: {transition_domain_name}, {current_state}{termColors.ENDC}""")
logger.info(
f"""{termColors.WARNING}
> Found existing domain entry for: {transition_domain_name}, {current_state}
{termColors.ENDC}"""
)
if transition_domain_status != current_state:
if transition_domain_status == TransitionDomain.StatusChoices.ON_HOLD:
if (
transition_domain_status
== TransitionDomain.StatusChoices.ON_HOLD
):
existingEntry.place_client_hold(ignoreEPP=True)
else:
existingEntry.revert_client_hold(ignoreEPP=True)
@ -108,13 +113,15 @@ Processing Transition Domain: {transition_domain_name}, {transition_domain_statu
updated_domain_entries.append(existingEntry)
# DEBUG:
if debug_on:
logger.info(f"""{termColors.WARNING}
>> Updated {transition_domain_name} state from '{current_state}' to '{existingEntry.state}{termColors.ENDC}'""")
logger.info(
f"""{termColors.WARNING}
>> Updated {transition_domain_name} state from
'{current_state}' to '{existingEntry.state}{termColors.ENDC}'"""
)
except Domain.DoesNotExist:
# no matching entry, make one
newEntry = Domain(
name = transition_domain_name,
state = transition_domain_status
name=transition_domain_name, state=transition_domain_status
)
to_create.append(newEntry)
@ -133,6 +140,7 @@ Domain table for domain:
----------TERMINATING----------"""
)
import sys
sys.exit()
except TransitionNotAllowed as err:
skipped_domain_entries.append(transition_domain_name)
@ -197,7 +205,6 @@ Updated Domains:
"""
)
# ----------------------------------------
# HELPER FUNCTIONS
# ----------------------------------------

View file

@ -785,7 +785,8 @@ class Domain(TimeStampedModel, DomainHelper):
)
def place_client_hold(self, ignoreEPP=False):
"""place a clienthold on a domain (no longer should resolve)
ignoreEPP (boolean) - set to true to by-pass EPP (used for transition domains)"""
ignoreEPP (boolean) - set to true to by-pass EPP (used for transition domains)
"""
# TODO - ensure all requirements for client hold are made here
# (check prohibited statuses)
logger.info("clientHold()-> inside clientHold")
@ -799,7 +800,8 @@ class Domain(TimeStampedModel, DomainHelper):
@transition(field="state", source=[State.READY, State.ON_HOLD], target=State.READY)
def revert_client_hold(self, ignoreEPP=False):
"""undo a clienthold placed on a domain
ignoreEPP (boolean) - set to true to by-pass EPP (used for transition domains)"""
ignoreEPP (boolean) - set to true to by-pass EPP (used for transition domains)
"""
logger.info("clientHold()-> inside clientHold")
if not ignoreEPP: