diff --git a/taiga/auth/api.py b/taiga/auth/api.py index 5d14d18f..df077b52 100644 --- a/taiga/auth/api.py +++ b/taiga/auth/api.py @@ -22,15 +22,16 @@ from enum import Enum from django.utils.translation import ugettext as _ from django.conf import settings +from taiga.base.api import validators from taiga.base.api import serializers from taiga.base.api import viewsets from taiga.base.decorators import list_route from taiga.base import exceptions as exc from taiga.base import response -from .serializers import PublicRegisterSerializer -from .serializers import PrivateRegisterForExistingUserSerializer -from .serializers import PrivateRegisterForNewUserSerializer +from .validators import PublicRegisterValidator +from .validators import PrivateRegisterForExistingUserValidator +from .validators import PrivateRegisterForNewUserValidator from .services import private_register_for_existing_user from .services import private_register_for_new_user @@ -44,7 +45,7 @@ from .permissions import AuthPermission def _parse_data(data:dict, *, cls): """ Generic function for parse user data using - specified serializer on `cls` keyword parameter. + specified validator on `cls` keyword parameter. Raises: RequestValidationError exception if some errors found when data is validated. @@ -52,21 +53,21 @@ def _parse_data(data:dict, *, cls): Returns the parsed data. """ - serializer = cls(data=data) - if not serializer.is_valid(): - raise exc.RequestValidationError(serializer.errors) - return serializer.data + validator = cls(data=data) + if not validator.is_valid(): + raise exc.RequestValidationError(validator.errors) + return validator.data # Parse public register data -parse_public_register_data = partial(_parse_data, cls=PublicRegisterSerializer) +parse_public_register_data = partial(_parse_data, cls=PublicRegisterValidator) # Parse private register data for existing user parse_private_register_for_existing_user_data = \ - partial(_parse_data, cls=PrivateRegisterForExistingUserSerializer) + partial(_parse_data, cls=PrivateRegisterForExistingUserValidator) # Parse private register data for new user parse_private_register_for_new_user_data = \ - partial(_parse_data, cls=PrivateRegisterForNewUserSerializer) + partial(_parse_data, cls=PrivateRegisterForNewUserValidator) class RegisterTypeEnum(Enum): @@ -81,10 +82,10 @@ def parse_register_type(userdata:dict) -> str: """ # Create adhoc inner serializer for avoid parse # manually the user data. - class _serializer(serializers.Serializer): + class _validator(validators.Validator): existing = serializers.BooleanField() - instance = _serializer(data=userdata) + instance = _validator(data=userdata) if not instance.is_valid(): raise exc.RequestValidationError(instance.errors) diff --git a/taiga/auth/serializers.py b/taiga/auth/validators.py similarity index 81% rename from taiga/auth/serializers.py rename to taiga/auth/validators.py index 8e8df4e2..6c3661ed 100644 --- a/taiga/auth/serializers.py +++ b/taiga/auth/validators.py @@ -16,16 +16,17 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from django.core import validators +from django.core import validators as core_validators from django.core.exceptions import ValidationError from django.utils.translation import ugettext as _ from taiga.base.api import serializers +from taiga.base.api import validators import re -class BaseRegisterSerializer(serializers.Serializer): +class BaseRegisterValidator(validators.Validator): full_name = serializers.CharField(max_length=256) email = serializers.EmailField(max_length=255) username = serializers.CharField(max_length=255) @@ -33,7 +34,7 @@ class BaseRegisterSerializer(serializers.Serializer): def validate_username(self, attrs, source): value = attrs[source] - validator = validators.RegexValidator(re.compile('^[\w.-]+$'), _("invalid username"), "invalid") + validator = core_validators.RegexValidator(re.compile('^[\w.-]+$'), _("invalid username"), "invalid") try: validator(value) @@ -43,15 +44,15 @@ class BaseRegisterSerializer(serializers.Serializer): return attrs -class PublicRegisterSerializer(BaseRegisterSerializer): +class PublicRegisterValidator(BaseRegisterValidator): pass -class PrivateRegisterForNewUserSerializer(BaseRegisterSerializer): +class PrivateRegisterForNewUserValidator(BaseRegisterValidator): token = serializers.CharField(max_length=255, required=True) -class PrivateRegisterForExistingUserSerializer(serializers.Serializer): +class PrivateRegisterForExistingUserValidator(validators.Validator): username = serializers.CharField(max_length=255) password = serializers.CharField(min_length=4) token = serializers.CharField(max_length=255, required=True)