mirror of
https://github.com/GSA/notifications-api.git
synced 2026-09-07 07:48:26 -04:00
Fix use of data_key argument and add logging
Signed-off-by: Carlo Costino <carlo.costino@gsa.gov>
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import timedelta
|
|||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
|
from flask import current_app
|
||||||
from flask_marshmallow.fields import fields
|
from flask_marshmallow.fields import fields
|
||||||
from marshmallow import (
|
from marshmallow import (
|
||||||
EXCLUDE,
|
EXCLUDE,
|
||||||
@@ -138,13 +139,15 @@ class UserSchema(BaseSchema):
|
|||||||
@validates("name")
|
@validates("name")
|
||||||
def validate_name(self, value, data_key):
|
def validate_name(self, value, data_key):
|
||||||
if not value:
|
if not value:
|
||||||
raise ValidationError(f"{data_key}: Invalid name")
|
current_app.logger.exception(f"{data_key}: Invalid name")
|
||||||
|
raise ValidationError("Invalid name")
|
||||||
|
|
||||||
@validates("email_address")
|
@validates("email_address")
|
||||||
def validate_email_address(self, value, data_key):
|
def validate_email_address(self, value, data_key):
|
||||||
try:
|
try:
|
||||||
validate_email_address(value)
|
validate_email_address(value)
|
||||||
except InvalidEmailError as e:
|
except InvalidEmailError as e:
|
||||||
|
current_app.logger.exception(f"{data_key}: {str(e)}")
|
||||||
raise ValidationError(str(e))
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
@validates("mobile_number")
|
@validates("mobile_number")
|
||||||
@@ -153,7 +156,8 @@ class UserSchema(BaseSchema):
|
|||||||
if value is not None:
|
if value is not None:
|
||||||
validate_phone_number(value, international=True)
|
validate_phone_number(value, international=True)
|
||||||
except InvalidPhoneError as error:
|
except InvalidPhoneError as error:
|
||||||
raise ValidationError(f"{data_key}: Invalid phone number ({error})")
|
current_app.logger.exception(f"{data_key}: {str(error)}")
|
||||||
|
raise ValidationError(f"Invalid phone number: {str(error)}")
|
||||||
|
|
||||||
|
|
||||||
class UserUpdateAttributeSchema(BaseSchema):
|
class UserUpdateAttributeSchema(BaseSchema):
|
||||||
@@ -178,13 +182,15 @@ class UserUpdateAttributeSchema(BaseSchema):
|
|||||||
@validates("name")
|
@validates("name")
|
||||||
def validate_name(self, value, data_key):
|
def validate_name(self, value, data_key):
|
||||||
if not value:
|
if not value:
|
||||||
raise ValidationError(f"{data_key}: Invalid name")
|
current_app.logger.exception(f"{data_key}: Invalid name")
|
||||||
|
raise ValidationError("Invalid name")
|
||||||
|
|
||||||
@validates("email_address")
|
@validates("email_address")
|
||||||
def validate_email_address(self, value, data_key):
|
def validate_email_address(self, value, data_key):
|
||||||
try:
|
try:
|
||||||
validate_email_address(value)
|
validate_email_address(value)
|
||||||
except InvalidEmailError as e:
|
except InvalidEmailError as e:
|
||||||
|
current_app.logger.exception(f"{data_key}: {str(e)}")
|
||||||
raise ValidationError(str(e))
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
@validates("mobile_number")
|
@validates("mobile_number")
|
||||||
@@ -193,7 +199,10 @@ class UserUpdateAttributeSchema(BaseSchema):
|
|||||||
if value is not None:
|
if value is not None:
|
||||||
validate_phone_number(value, international=True)
|
validate_phone_number(value, international=True)
|
||||||
except InvalidPhoneError as error:
|
except InvalidPhoneError as error:
|
||||||
raise ValidationError(f"{data_key}: Invalid phone number ({error})")
|
current_app.logger.exception(
|
||||||
|
f"{data_key}: Invalid phone number ({str(error)})"
|
||||||
|
)
|
||||||
|
raise ValidationError(f"Invalid phone number: {str(error)}")
|
||||||
|
|
||||||
@validates_schema(pass_original=True)
|
@validates_schema(pass_original=True)
|
||||||
def check_unknown_fields(self, data, original_data, **kwargs):
|
def check_unknown_fields(self, data, original_data, **kwargs):
|
||||||
@@ -286,10 +295,16 @@ class ServiceSchema(BaseSchema, UUIDsAsStringsMixin):
|
|||||||
permissions = [v.permission for v in value]
|
permissions = [v.permission for v in value]
|
||||||
for p in permissions:
|
for p in permissions:
|
||||||
if p not in {e for e in ServicePermissionType}:
|
if p not in {e for e in ServicePermissionType}:
|
||||||
raise ValidationError(f"{data_key}: Invalid Service Permission ('{p}')")
|
current_app.logger.exception(
|
||||||
|
f"{data_key}: Invalid Service Permission: '{p}'"
|
||||||
|
)
|
||||||
|
raise ValidationError(f"Invalid Service Permission: '{p}'")
|
||||||
|
|
||||||
if len(set(permissions)) != len(permissions):
|
if len(set(permissions)) != len(permissions):
|
||||||
duplicates = list(set([x for x in permissions if permissions.count(x) > 1]))
|
duplicates = list(set([x for x in permissions if permissions.count(x) > 1]))
|
||||||
|
current_app.logger.exception(
|
||||||
|
f"{data_key}: Duplicate Service Permission: {duplicates}"
|
||||||
|
)
|
||||||
raise ValidationError(f"Duplicate Service Permission: {duplicates}")
|
raise ValidationError(f"Duplicate Service Permission: {duplicates}")
|
||||||
|
|
||||||
@pre_load()
|
@pre_load()
|
||||||
@@ -517,7 +532,10 @@ class SmsNotificationSchema(NotificationSchema):
|
|||||||
try:
|
try:
|
||||||
validate_phone_number(value, international=True)
|
validate_phone_number(value, international=True)
|
||||||
except InvalidPhoneError as error:
|
except InvalidPhoneError as error:
|
||||||
raise ValidationError(f"{data_key}: Invalid phone number ({error}")
|
current_app.logger.exception(
|
||||||
|
f"{data_key}: Invalid phone number ({str(error)}"
|
||||||
|
)
|
||||||
|
raise ValidationError(f"Invalid phone number: {str(error)}")
|
||||||
|
|
||||||
@post_load
|
@post_load
|
||||||
def format_phone_number(self, item, **kwargs):
|
def format_phone_number(self, item, **kwargs):
|
||||||
@@ -534,6 +552,7 @@ class EmailNotificationSchema(NotificationSchema):
|
|||||||
try:
|
try:
|
||||||
validate_email_address(value)
|
validate_email_address(value)
|
||||||
except InvalidEmailError as e:
|
except InvalidEmailError as e:
|
||||||
|
current_app.logger.exception(f"{data_key}: {str(e)}")
|
||||||
raise ValidationError(str(e))
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
|
|
||||||
@@ -656,6 +675,7 @@ class InvitedUserSchema(BaseSchema):
|
|||||||
try:
|
try:
|
||||||
validate_email_address(value)
|
validate_email_address(value)
|
||||||
except InvalidEmailError as e:
|
except InvalidEmailError as e:
|
||||||
|
current_app.logger.exception(f"{data_key}: {str(e)}")
|
||||||
raise ValidationError(str(e))
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
|
|
||||||
@@ -678,6 +698,7 @@ class EmailDataSchema(ma.Schema):
|
|||||||
try:
|
try:
|
||||||
validate_email_address(value)
|
validate_email_address(value)
|
||||||
except InvalidEmailError as e:
|
except InvalidEmailError as e:
|
||||||
|
current_app.logger.exception(f"{data_key}: {str(e)}")
|
||||||
raise ValidationError(str(e))
|
raise ValidationError(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user