Migrating auth serializers

remotes/origin/issue/4795/notification_even_they_are_disabled
Jesús Espino 2016-07-06 08:58:25 +02:00 committed by David Barragán Merino
parent 8d86c42fa0
commit 81454426f9
2 changed files with 21 additions and 19 deletions

View File

@ -22,15 +22,16 @@ from enum import Enum
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.conf import settings from django.conf import settings
from taiga.base.api import validators
from taiga.base.api import serializers from taiga.base.api import serializers
from taiga.base.api import viewsets from taiga.base.api import viewsets
from taiga.base.decorators import list_route from taiga.base.decorators import list_route
from taiga.base import exceptions as exc from taiga.base import exceptions as exc
from taiga.base import response from taiga.base import response
from .serializers import PublicRegisterSerializer from .validators import PublicRegisterValidator
from .serializers import PrivateRegisterForExistingUserSerializer from .validators import PrivateRegisterForExistingUserValidator
from .serializers import PrivateRegisterForNewUserSerializer from .validators import PrivateRegisterForNewUserValidator
from .services import private_register_for_existing_user from .services import private_register_for_existing_user
from .services import private_register_for_new_user from .services import private_register_for_new_user
@ -44,7 +45,7 @@ from .permissions import AuthPermission
def _parse_data(data:dict, *, cls): def _parse_data(data:dict, *, cls):
""" """
Generic function for parse user data using Generic function for parse user data using
specified serializer on `cls` keyword parameter. specified validator on `cls` keyword parameter.
Raises: RequestValidationError exception if Raises: RequestValidationError exception if
some errors found when data is validated. some errors found when data is validated.
@ -52,21 +53,21 @@ def _parse_data(data:dict, *, cls):
Returns the parsed data. Returns the parsed data.
""" """
serializer = cls(data=data) validator = cls(data=data)
if not serializer.is_valid(): if not validator.is_valid():
raise exc.RequestValidationError(serializer.errors) raise exc.RequestValidationError(validator.errors)
return serializer.data return validator.data
# Parse public register 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 data for existing user
parse_private_register_for_existing_user_data = \ 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 data for new user
parse_private_register_for_new_user_data = \ parse_private_register_for_new_user_data = \
partial(_parse_data, cls=PrivateRegisterForNewUserSerializer) partial(_parse_data, cls=PrivateRegisterForNewUserValidator)
class RegisterTypeEnum(Enum): class RegisterTypeEnum(Enum):
@ -81,10 +82,10 @@ def parse_register_type(userdata:dict) -> str:
""" """
# Create adhoc inner serializer for avoid parse # Create adhoc inner serializer for avoid parse
# manually the user data. # manually the user data.
class _serializer(serializers.Serializer): class _validator(validators.Validator):
existing = serializers.BooleanField() existing = serializers.BooleanField()
instance = _serializer(data=userdata) instance = _validator(data=userdata)
if not instance.is_valid(): if not instance.is_valid():
raise exc.RequestValidationError(instance.errors) raise exc.RequestValidationError(instance.errors)

View File

@ -16,16 +16,17 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.core import validators from django.core import validators as core_validators
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from taiga.base.api import serializers from taiga.base.api import serializers
from taiga.base.api import validators
import re import re
class BaseRegisterSerializer(serializers.Serializer): class BaseRegisterValidator(validators.Validator):
full_name = serializers.CharField(max_length=256) full_name = serializers.CharField(max_length=256)
email = serializers.EmailField(max_length=255) email = serializers.EmailField(max_length=255)
username = serializers.CharField(max_length=255) username = serializers.CharField(max_length=255)
@ -33,7 +34,7 @@ class BaseRegisterSerializer(serializers.Serializer):
def validate_username(self, attrs, source): def validate_username(self, attrs, source):
value = 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: try:
validator(value) validator(value)
@ -43,15 +44,15 @@ class BaseRegisterSerializer(serializers.Serializer):
return attrs return attrs
class PublicRegisterSerializer(BaseRegisterSerializer): class PublicRegisterValidator(BaseRegisterValidator):
pass pass
class PrivateRegisterForNewUserSerializer(BaseRegisterSerializer): class PrivateRegisterForNewUserValidator(BaseRegisterValidator):
token = serializers.CharField(max_length=255, required=True) token = serializers.CharField(max_length=255, required=True)
class PrivateRegisterForExistingUserSerializer(serializers.Serializer): class PrivateRegisterForExistingUserValidator(validators.Validator):
username = serializers.CharField(max_length=255) username = serializers.CharField(max_length=255)
password = serializers.CharField(min_length=4) password = serializers.CharField(min_length=4)
token = serializers.CharField(max_length=255, required=True) token = serializers.CharField(max_length=255, required=True)