This commit is contained in:
zandercymatics 2023-09-28 13:53:21 -06:00
parent c6baf9c98b
commit 59b095beab
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
7 changed files with 226 additions and 115 deletions

View file

@ -2,7 +2,7 @@ import logging
from datetime import date
from string import digits
from django_fsm import FSMField, transition # type: ignore
from django_fsm import FSMField, transition, TransitionNotAllowed # type: ignore
from django.db import models
@ -802,20 +802,14 @@ class Domain(TimeStampedModel, DomainHelper):
self._remove_client_hold()
# TODO -on the client hold ticket any additional error handling here
@transition(field="state", source=State.ON_HOLD, target=State.DELETED)
@transition(field="state", source=[State.ON_HOLD, State.DNS_NEEDED], target=State.DELETED)
def deletedInEpp(self):
"""domain is deleted in epp but is saved in our database.
Returns the request_code"""
valid_delete_states = [
self.State.ON_HOLD,
self.State.DNS_NEEDED
]
# Check that the domain contacts a valid status
if (self.state not in valid_delete_states):
raise ValueError(
f"Invalid domain state of {self.state}. Cannot delete."
)
"""Domain is deleted in epp but is saved in our database.
Error handling should be provided by the caller."""
# While we want to log errors, we want to preserve
# that information when this function is called.
# Human-readable errors are introduced at the admin.py level,
# as doing everything here would reduce reliablity.
try:
logger.info("deletedInEpp()-> inside _delete_domain")
self._delete_domain()
@ -824,6 +818,11 @@ class Domain(TimeStampedModel, DomainHelper):
f"Could not delete domain. Registry returned error: {err}"
)
raise err
except TransitionNotAllowed as err:
logger.error(
"Could not delete domain. FSM failure: {err}"
)
raise err
except Exception as err:
logger.error(
f"Could not delete domain. An unspecified error occured: {err}"