Browse Source

Add gettext to correct locations

Alec Nikolas Reiter 7 years ago
parent
commit
c92ac501b0

+ 7 - 3
flaskbb/auth/services/activation.py

@@ -8,6 +8,8 @@
     :license: BSD, see LICENSE for more details
 """
 
+from flask_babelplus import gettext as _
+
 from ...core.auth.activation import AccountActivator as _AccountActivator
 from ...core.exceptions import ValidationError
 from ...core.tokens import Token, TokenActions, TokenError
@@ -24,10 +26,10 @@ class AccountActivator(_AccountActivator):
         user = self.users.query.filter_by(email=email).first()
 
         if user is None:
-            raise ValidationError('email', "Entered email doesn't exist")
+            raise ValidationError('email', _("Entered email doesn't exist"))
 
         if user.activated:
-            raise ValidationError('email', 'Account is already activated')
+            raise ValidationError('email', _('Account is already activated'))
 
         token = self.token_serializer.dumps(
             Token(user_id=user.id, operation=TokenActions.ACTIVATE_ACCOUNT)
@@ -43,5 +45,7 @@ class AccountActivator(_AccountActivator):
             raise TokenError.invalid()
         user = self.users.query.get(token.user_id)
         if user.activated:
-            raise ValidationError('activated', 'Account is already activated')
+            raise ValidationError(
+                'activated', _('Account is already activated')
+            )
         user.activated = True

+ 3 - 1
flaskbb/auth/services/password.py

@@ -8,6 +8,8 @@
     :license: BSD, see LICENSE for more details
 """
 
+from flask_babelplus import gettext as _
+
 from ...core.auth.password import ResetPasswordService as _ResetPasswordService
 from ...core.exceptions import StopValidation, ValidationError
 from ...core.tokens import Token, TokenActions, TokenError
@@ -25,7 +27,7 @@ class ResetPasswordService(_ResetPasswordService):
         user = self.users.query.filter_by(email=email).first()
 
         if user is None:
-            raise ValidationError('email', 'Invalid email')
+            raise ValidationError('email', _('Invalid email'))
 
         token = self.token_serializer.dumps(
             Token(user_id=user.id, operation=TokenActions.RESET_PASSWORD)

+ 17 - 9
flaskbb/auth/services/registration.py

@@ -11,10 +11,11 @@
 
 from collections import namedtuple
 
+from flask_babelplus import gettext as _
 from sqlalchemy import func
 
-from ...core.auth.registration import UserValidator, UserRegistrationService
-from ...core.exceptions import ValidationError, StopValidation
+from ...core.auth.registration import UserRegistrationService, UserValidator
+from ...core.exceptions import StopValidation, ValidationError
 
 __all__ = (
     "UsernameRequirements", "UsernameValidator", "EmailUniquenessValidator",
@@ -36,8 +37,10 @@ class UsernameValidator(UserValidator):
                 self._requirements.max):
             raise ValidationError(
                 'username',
-                'Username must be between {} and {} characters long'.format(
-                    self._requirements.min, self._requirements.max
+                _(
+                    'Username must be between %(min)s and %(max)s characters long',
+                    min=self._requirements.min,
+                    max=self._requirements.max
                 )
             )
 
@@ -45,7 +48,10 @@ class UsernameValidator(UserValidator):
         if is_blacklisted:  # pragma: no branch
             raise ValidationError(
                 'username',
-                '{} is a forbidden username'.format(user_info.username)
+                _(
+                    '%(username)s is a forbidden username',
+                    username=user_info.username
+                )
             )
 
 
@@ -61,7 +67,10 @@ class UsernameUniquenessValidator(UserValidator):
         if count != 0:  # pragma: no branch
             raise ValidationError(
                 'username',
-                '{} is already registered'.format(user_info.username)
+                _(
+                    '%(username)s is already registered',
+                    username=user_info.username
+                )
             )
 
 
@@ -76,7 +85,8 @@ class EmailUniquenessValidator(UserValidator):
         ).count()
         if count != 0:  # pragma: no branch
             raise ValidationError(
-                'email', '{} is already registered'.format(user_info.email)
+                'email',
+                _('%(email)s is already registered', email=user_info.email)
             )
 
 
@@ -94,8 +104,6 @@ class RegistrationService(UserRegistrationService):
                 v(user_info)
             except ValidationError as e:
                 failures.append((e.attribute, e.reason))
-
         if failures:
             raise StopValidation(failures)
-
         self.user_repo.add(user_info)

+ 7 - 6
flaskbb/auth/views.py

@@ -31,9 +31,9 @@ from flaskbb.utils.helpers import (anonymous_required, enforce_recaptcha,
                                    requires_unactivated)
 from flaskbb.utils.settings import flaskbb_config
 
+from ..core.auth.registration import UserRegistrationInfo
 from ..core.exceptions import StopValidation, ValidationError
 from ..core.tokens import TokenError
-from ..core.auth.registration import UserRegistrationInfo
 from .plugins import impl
 from .services import (account_activator_factory, registration_service_factory,
                        reset_service_factory)
@@ -212,7 +212,7 @@ class ResetPassword(MethodView):
                 )
                 db.session.commit()
             except TokenError as e:
-                flash(_(e.reason), 'danger')
+                flash(e.reason, 'danger')
                 return redirect(url_for('auth.forgot_password'))
             except StopValidation as e:
                 form.populate_errors(e.reasons)
@@ -275,9 +275,9 @@ class ActivateAccount(MethodView):
         try:
             activator.activate_account(token)
         except TokenError as e:
-            flash(_(e.reason), 'danger')
+            flash(e.reason, 'danger')
         except ValidationError as e:
-            flash(_(e.reason), 'danger')
+            flash(e.reason, 'danger')
             return redirect('forum.index')
 
         else:
@@ -286,8 +286,9 @@ class ActivateAccount(MethodView):
             except Exception:  # noqa
                 logger.exception("Database error while activating account")
                 flash(
-                    _("Could activate account due to an unrecoverable error"),
-                    "danger"
+                    _(
+                        "Could not activate account due to an unrecoverable error"
+                    ), "danger"
                 )
 
                 return redirect('auth.request_activation_token')

+ 8 - 3
flaskbb/core/tokens.py

@@ -12,34 +12,37 @@
 from abc import abstractmethod
 
 import attr
+from flask_babelplus import gettext as _
 
 from .._compat import ABC
 from .exceptions import BaseFlaskBBError
 
+
 class TokenError(BaseFlaskBBError):
     """
     Raised when there is an issue with deserializing
     a token. Has helper classmethods to ensure
     consistent verbiage.
     """
+
     def __init__(self, reason):
         self.reason = reason
         super(TokenError, self).__init__(reason)
 
     @classmethod
     def invalid(cls):
-        return cls('Token is invalid')
+        return cls(_('Token is invalid'))
 
     @classmethod
     def expired(cls):
-        return cls('Token is expired')
+        return cls(_('Token is expired'))
 
     # in theory this would never be raised
     # but it's provided for a generic catchall
     # when processing goes horribly wrong
     @classmethod  # pragma: no cover
     def bad(cls):
-        return cls('Token cannot be processed')
+        return cls(_('Token cannot be processed'))
 
 
 # holder for token actions
@@ -65,6 +68,7 @@ class TokenSerializer(ABC):
     loads must accept a string representation of
     a JWT and produce a token instance
     """
+
     @abstractmethod
     def dumps(self, token):
         pass
@@ -83,6 +87,7 @@ class TokenVerifier(ABC):
     Should raise a flaskbb.core.exceptions.ValidationError
     if verification fails.
     """
+
     @abstractmethod
     def verify_token(self, token, **kwargs):
         pass

+ 2 - 0
tests/unit/auth/test_activation.py

@@ -5,6 +5,8 @@ from flaskbb.core.exceptions import ValidationError
 from flaskbb.core.tokens import Token, TokenActions, TokenError
 from flaskbb.user.models import User
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 class TestAccountActivationInitiateActivation(object):
 

+ 2 - 0
tests/unit/auth/test_password.py

@@ -6,6 +6,8 @@ from flaskbb.core.exceptions import StopValidation, ValidationError
 from flaskbb.core.tokens import Token, TokenActions, TokenError
 from flaskbb.user.models import User
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 class TestPasswordReset(object):
 

+ 2 - 0
tests/unit/auth/test_registration.py

@@ -5,6 +5,8 @@ from flaskbb.core.auth.registration import UserRegistrationInfo
 from flaskbb.core.exceptions import StopValidation, ValidationError
 from flaskbb.core.user.repo import UserRepository
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 class RaisingValidator(registration.UserValidator):
 

+ 3 - 0
tests/unit/auth/test_validators.py

@@ -1,4 +1,5 @@
 import pytest
+
 from flaskbb.auth.services.registration import (EmailUniquenessValidator,
                                                 UsernameRequirements,
                                                 UsernameUniquenessValidator,
@@ -7,6 +8,8 @@ from flaskbb.core.auth.registration import UserRegistrationInfo
 from flaskbb.core.exceptions import ValidationError
 from flaskbb.user.models import User
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 def test_raises_if_username_too_short():
     requirements = UsernameRequirements(min=4, max=100, blacklist=set())

+ 2 - 0
tests/unit/tokens/test_serializer.py

@@ -6,6 +6,8 @@ from freezegun import freeze_time
 from flaskbb import tokens
 from flaskbb.core.tokens import Token, TokenActions, TokenError
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 def test_can_round_trip_token():
     serializer = tokens.FlaskBBTokenSerializer(

+ 3 - 1
tests/unit/tokens/test_verifiers.py

@@ -1,10 +1,12 @@
 import pytest
 
-from flaskbb.core.tokens import Token, TokenActions
 from flaskbb.core.exceptions import ValidationError
+from flaskbb.core.tokens import Token, TokenActions
 from flaskbb.tokens import verifiers
 from flaskbb.user.models import User
 
+pytestmark = pytest.mark.usefixtures('default_settings')
+
 
 def test_raises_if_email_doesnt_match_token_user(Fred):
     verifier = verifiers.EmailMatchesUserToken(User)