user.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """
  2. user -
  3. auther: tanlie
  4. date: 2026/8/23
  5. """
  6. from wtforms import StringField, IntegerField, ValidationError
  7. from wtforms.validators import DataRequired, Email, Regexp, length
  8. from app.libs.enums import ClientTypeEnum
  9. from app.validators.base import BaseForm as Form
  10. class ClientForm(Form):
  11. account = StringField(validators=[DataRequired(message='不允许为空'), length(
  12. min=5, max=32
  13. )])
  14. secret = StringField()
  15. type = IntegerField(validators=[DataRequired()])
  16. def validate_type(self, value):
  17. try:
  18. client = ClientTypeEnum(value.data)
  19. except ValueError as e:
  20. raise e
  21. self.type.data = client
  22. class UserEmailForm(ClientForm):
  23. account = StringField(validators=[
  24. Email(message='invalidate email')
  25. ])
  26. secret = StringField(validators=[
  27. DataRequired(),
  28. # password can only include letters , numbers and "_"
  29. Regexp(r'^[A-Za-z0-9_*&$#@]{6,22}$')
  30. ])
  31. nickname = StringField(validators=[DataRequired(),
  32. length(min=2, max=22)])
  33. def validate_account(self, value):
  34. if len(value.data) < 5 or len(value.data) > 32:
  35. raise ValidationError(
  36. 'Account must be between 5 and 32 characters long'
  37. )
  38. # if User.query.filter_by(email=value.data).first():
  39. raise ValidationError()