mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-07 12:08:25 -04:00
improve error handling
This commit is contained in:
@@ -80,6 +80,7 @@ class RedisClient:
|
|||||||
try:
|
try:
|
||||||
return self.scripts["delete-keys-by-pattern"](args=[pattern])
|
return self.scripts["delete-keys-by-pattern"](args=[pattern])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
current_app.logger.exception(f"Exception in delete_by_pattern pattern={pattern}")
|
||||||
self.__handle_exception(
|
self.__handle_exception(
|
||||||
e, raise_exception, "delete-by-pattern", pattern
|
e, raise_exception, "delete-by-pattern", pattern
|
||||||
)
|
)
|
||||||
@@ -129,6 +130,7 @@ class RedisClient:
|
|||||||
result = pipe.execute()
|
result = pipe.execute()
|
||||||
return result[2] > limit
|
return result[2] > limit
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
current_app.logger.exception(f"Exception in exceeded_rate_limit cache_key {cache_key} limit = {limit}")
|
||||||
self.__handle_exception(
|
self.__handle_exception(
|
||||||
e, raise_exception, "rate-limit-pipeline", cache_key
|
e, raise_exception, "rate-limit-pipeline", cache_key
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -83,7 +83,8 @@ class RecipientCSV:
|
|||||||
def guestlist(self, value):
|
def guestlist(self, value):
|
||||||
try:
|
try:
|
||||||
self._guestlist = list(value)
|
self._guestlist = list(value)
|
||||||
except TypeError:
|
except TypeError as te:
|
||||||
|
current_app.logger.exception(f"Type error setting the guest list to {value}")
|
||||||
self._guestlist = []
|
self._guestlist = []
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -111,6 +112,7 @@ class RecipientCSV:
|
|||||||
try:
|
try:
|
||||||
self._placeholders = list(value) + self.recipient_column_headers
|
self._placeholders = list(value) + self.recipient_column_headers
|
||||||
except TypeError:
|
except TypeError:
|
||||||
|
current_app.logger.exception(f"TypeError setting the placeholders to {value}")
|
||||||
self._placeholders = self.recipient_column_headers
|
self._placeholders = self.recipient_column_headers
|
||||||
self.placeholders_as_column_keys = [
|
self.placeholders_as_column_keys = [
|
||||||
InsensitiveDict.make_key(placeholder) for placeholder in self._placeholders
|
InsensitiveDict.make_key(placeholder) for placeholder in self._placeholders
|
||||||
@@ -350,6 +352,7 @@ class RecipientCSV:
|
|||||||
value, international=self.allow_international_sms
|
value, international=self.allow_international_sms
|
||||||
)
|
)
|
||||||
except (InvalidEmailError, InvalidPhoneError) as error:
|
except (InvalidEmailError, InvalidPhoneError) as error:
|
||||||
|
current_app.logger.exception(f"Email or phone error for {value}")
|
||||||
return str(error)
|
return str(error)
|
||||||
|
|
||||||
if InsensitiveDict.make_key(key) not in self.placeholders_as_column_keys:
|
if InsensitiveDict.make_key(key) not in self.placeholders_as_column_keys:
|
||||||
@@ -511,6 +514,7 @@ def is_us_phone_number(number):
|
|||||||
try:
|
try:
|
||||||
return _get_country_code(number) == us_prefix
|
return _get_country_code(number) == us_prefix
|
||||||
except NumberParseException:
|
except NumberParseException:
|
||||||
|
current_app.logger.exception("NumberParseException checking if phone number is US number")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@@ -599,6 +603,7 @@ def validate_us_phone_number(number):
|
|||||||
raise InvalidPhoneError("Phone number range is not in use")
|
raise InvalidPhoneError("Phone number range is not in use")
|
||||||
raise InvalidPhoneError("Phone number is not possible")
|
raise InvalidPhoneError("Phone number is not possible")
|
||||||
except NumberParseException as exc:
|
except NumberParseException as exc:
|
||||||
|
current_app.logger.exception("NumberParseException validating US phone number")
|
||||||
raise InvalidPhoneError(exc._msg) from exc
|
raise InvalidPhoneError(exc._msg) from exc
|
||||||
|
|
||||||
|
|
||||||
@@ -655,6 +660,7 @@ def try_validate_and_format_phone_number(number, international=None, log_msg=Non
|
|||||||
try:
|
try:
|
||||||
return validate_and_format_phone_number(number, international)
|
return validate_and_format_phone_number(number, international)
|
||||||
except InvalidPhoneError as exc:
|
except InvalidPhoneError as exc:
|
||||||
|
current_app.logger.exception("InvalidPhoneNumber while trying to validate and format phone number")
|
||||||
if log_msg:
|
if log_msg:
|
||||||
current_app.logger.warning("{}: {}".format(log_msg, exc))
|
current_app.logger.warning("{}: {}".format(log_msg, exc))
|
||||||
return number
|
return number
|
||||||
@@ -689,6 +695,7 @@ def validate_email_address(email_address): # noqa (C901 too complex)
|
|||||||
try:
|
try:
|
||||||
hostname = hostname.encode("idna").decode("ascii")
|
hostname = hostname.encode("idna").decode("ascii")
|
||||||
except UnicodeError:
|
except UnicodeError:
|
||||||
|
current_app.logger.exception("UnicodeError validating email address")
|
||||||
raise InvalidEmailError
|
raise InvalidEmailError
|
||||||
|
|
||||||
parts = hostname.split(".")
|
parts = hostname.split(".")
|
||||||
@@ -731,6 +738,7 @@ def format_phone_number_human_readable(phone_number):
|
|||||||
phone_number = validate_phone_number(phone_number, international=True)
|
phone_number = validate_phone_number(phone_number, international=True)
|
||||||
except InvalidPhoneError:
|
except InvalidPhoneError:
|
||||||
# if there was a validation error, we want to shortcut out here, but still display the number on the front end
|
# if there was a validation error, we want to shortcut out here, but still display the number on the front end
|
||||||
|
current_app.logger.exception("InvalidPhoneError trying to format_phone_number_human_readable()")
|
||||||
return phone_number
|
return phone_number
|
||||||
international_phone_info = get_international_phone_info(phone_number)
|
international_phone_info = get_international_phone_info(phone_number)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user