chore: refactored error messages

This commit is contained in:
mario 2017-08-29 08:04:02 +02:00
parent 9d1f65eedc
commit e0c4ffe0d6
2 changed files with 57 additions and 25 deletions

View File

@ -23,6 +23,21 @@ class SocialLoginSerializer(serializers.Serializer):
access_token = serializers.CharField(required=False, allow_blank=True)
code = serializers.CharField(required=False, allow_blank=True)
default_error_messages = {
'view_not_defined':
_('View is not defined, pass it as a context variable'),
'adapter_class_missing':
_('Define adapter_class in view'),
'callback_url_missing':
_('Define callback_url in view'),
'client_class_missing':
_('Define client_class in view'),
'incorrect_input':
_('Incorrect input. access_token or code is required.'),
'incorrect_value':
_('Incorrect value')
}
def _get_request(self):
request = self.context.get('request')
if not isinstance(request, HttpRequest):
@ -49,13 +64,11 @@ class SocialLoginSerializer(serializers.Serializer):
request = self._get_request()
if not view:
raise serializers.ValidationError(
_("View is not defined, pass it as a context variable")
)
self.fail('view_not_defined')
adapter_class = getattr(view, 'adapter_class', None)
if not adapter_class:
raise serializers.ValidationError(_("Define adapter_class in view"))
self.fail('adapter_class_missing')
adapter = adapter_class(request)
app = adapter.get_provider().get_app(request)
@ -73,13 +86,12 @@ class SocialLoginSerializer(serializers.Serializer):
self.client_class = getattr(view, 'client_class', None)
if not self.callback_url:
self.fail('callback_url_missing')
raise serializers.ValidationError(
_("Define callback_url in view")
)
if not self.client_class:
raise serializers.ValidationError(
_("Define client_class in view")
)
self.fail('client_class_missing')
code = attrs.get('code')
@ -98,8 +110,7 @@ class SocialLoginSerializer(serializers.Serializer):
access_token = token['access_token']
else:
raise serializers.ValidationError(
_("Incorrect input. access_token or code is required."))
self.fail('incorrect_input')
social_token = adapter.parse_token({'access_token': access_token})
social_token.app = app
@ -108,7 +119,7 @@ class SocialLoginSerializer(serializers.Serializer):
login = self.get_social_login(adapter, app, social_token, access_token)
complete_social_login(request, login)
except HTTPError:
raise serializers.ValidationError(_('Incorrect value'))
self.fail('incorrect_value')
if not login.is_existing:
login.lookup()
@ -128,6 +139,13 @@ class RegisterSerializer(serializers.Serializer):
password1 = serializers.CharField(write_only=True)
password2 = serializers.CharField(write_only=True)
default_error_messages = {
'user_already_registered':
_('A user is already registered with this e-mail address.'),
'password_didnt_match':
_('The two password fields didn\'t match.')
}
def validate_username(self, username):
username = get_adapter().clean_username(username)
return username
@ -136,8 +154,7 @@ class RegisterSerializer(serializers.Serializer):
email = get_adapter().clean_email(email)
if allauth_settings.UNIQUE_EMAIL:
if email and email_address_exists(email):
raise serializers.ValidationError(
_("A user is already registered with this e-mail address."))
self.fail('user_already_registered')
return email
def validate_password1(self, password):
@ -145,7 +162,7 @@ class RegisterSerializer(serializers.Serializer):
def validate(self, data):
if data['password1'] != data['password2']:
raise serializers.ValidationError(_("The two password fields didn't match."))
self.fail('password_didnt_match')
return data
def custom_signup(self, request, user):

View File

@ -21,14 +21,28 @@ class LoginSerializer(serializers.Serializer):
email = serializers.EmailField(required=False, allow_blank=True)
password = serializers.CharField(style={'input_type': 'password'})
default_error_messages = {
'email_and_password_required':
_('Must include "email" and "password".'),
'username_and_password_required':
_('Must include "username" and "password".'),
'either_username_or_email_and_password_required':
_('Must include either "username" or "email" and "password".'),
'user_account_disabled':
_('User account is disabled.'),
'cannot_log_in':
_('Unable to log in with provided credentials.'),
'email_not_verified':
_('E-mail is not verified.'),
}
def _validate_email(self, email, password):
user = None
if email and password:
user = authenticate(email=email, password=password)
else:
msg = _('Must include "email" and "password".')
raise exceptions.ValidationError(msg)
self.fail('email_and_password_required')
return user
@ -38,8 +52,7 @@ class LoginSerializer(serializers.Serializer):
if username and password:
user = authenticate(username=username, password=password)
else:
msg = _('Must include "username" and "password".')
raise exceptions.ValidationError(msg)
self.fail('username_and_password_required')
return user
@ -51,8 +64,7 @@ class LoginSerializer(serializers.Serializer):
elif username and password:
user = authenticate(username=username, password=password)
else:
msg = _('Must include either "username" or "email" and "password".')
raise exceptions.ValidationError(msg)
self.fail('either_username_or_email_and_password_required')
return user
@ -92,11 +104,9 @@ class LoginSerializer(serializers.Serializer):
# Did we get back an active user?
if user:
if not user.is_active:
msg = _('User account is disabled.')
raise exceptions.ValidationError(msg)
self.fail('user_account_disabled')
else:
msg = _('Unable to log in with provided credentials.')
raise exceptions.ValidationError(msg)
self.fail('cannot_log_in')
# If required, is the email verified?
if 'rest_auth.registration' in settings.INSTALLED_APPS:
@ -104,7 +114,7 @@ class LoginSerializer(serializers.Serializer):
if app_settings.EMAIL_VERIFICATION == app_settings.EmailVerificationMethod.MANDATORY:
email_address = user.emailaddress_set.get(email=user.email)
if not email_address.verified:
raise serializers.ValidationError(_('E-mail is not verified.'))
self.fail('email_not_verified')
attrs['user'] = user
return attrs
@ -230,6 +240,10 @@ class PasswordChangeSerializer(serializers.Serializer):
set_password_form_class = SetPasswordForm
default_error_messages = {
'invalid_password': _('Invalid password.'),
}
def __init__(self, *args, **kwargs):
self.old_password_field_enabled = getattr(
settings, 'OLD_PASSWORD_FIELD_ENABLED', False
@ -253,7 +267,8 @@ class PasswordChangeSerializer(serializers.Serializer):
)
if all(invalid_password_conditions):
raise serializers.ValidationError('Invalid password')
self.fail('invalid_password')
return value
def validate(self, attrs):