""" user - auther: tanlie date: 2026/8/23 """ from wtforms import StringField, IntegerField, ValidationError from wtforms.validators import DataRequired, Email, Regexp, length from app.libs.enums import ClientTypeEnum from app.validators.base import BaseForm as Form class ClientForm(Form): account = StringField(validators=[DataRequired(message='不允许为空'), length( min=5, max=32 )]) secret = StringField() type = IntegerField(validators=[DataRequired()]) def validate_type(self, value): try: client = ClientTypeEnum(value.data) except ValueError as e: raise e self.type.data = client class UserEmailForm(ClientForm): account = StringField(validators=[ Email(message='invalidate email') ]) secret = StringField(validators=[ DataRequired(), # password can only include letters , numbers and "_" Regexp(r'^[A-Za-z0-9_*&$#@]{6,22}$') ]) nickname = StringField(validators=[DataRequired(), length(min=2, max=22)]) def validate_account(self, value): if len(value.data) < 5 or len(value.data) > 32: raise ValidationError( 'Account must be between 5 and 32 characters long' ) # if User.query.filter_by(email=value.data).first(): raise ValidationError()