Source code for flask_unchained.bundles.security.serializers.user_serializer

try:
    from flask_unchained.bundles.api import ma
except ImportError:
    from py_meta_utils import OptionalClass as ma

from flask_unchained import injectable, lazy_gettext as _

from ..models import User
from ..services import UserManager


[docs]class UserSerializer(ma.ModelSerializer): """ Marshmallow serializer for the :class:`~flask_unchained.bundles.security.User` model. """ user_manager: UserManager = injectable email = ma.Email(required=True) password = ma.String(required=True) roles = ma.Pluck('RoleSerializer', 'name', many=True) class Meta: model = User exclude = ('confirmed_at', 'created_at', 'updated_at', 'user_roles') dump_only = ('is_active', 'roles') load_only = ('password',) @ma.validates('email') def validate_email(self, email): existing = self.user_manager.get_by(email=email) if existing and (self.is_create() or existing != self.instance): raise ma.ValidationError( _('flask_unchained.bundles.security:error.email_already_associated', email=email))