from flask_wtf import FlaskForm from wtforms import StringField, PasswordField from wtforms.validators import InputRequired, Length, Regexp class LoginForm(FlaskForm): username = StringField('Username', validators=[ InputRequired(message='Username is required.'), Regexp(r'^[a-zA-Z][a-zA-Z0-9_]{0,19}$', message='Invalid username format.') ]) password = PasswordField('Password', validators=[ InputRequired(message='Password is required.'), Length(min=1, max=30, message='Password must be between 1 and 30 characters long.') ]) class AddUserForm(FlaskForm): username = StringField('Username', validators=[ InputRequired(message='Username is required.'), Regexp(r'^[a-zA-Z][a-zA-Z0-9_]{0,19}$', message='Username must start with a letter and can only contain letters, numbers, and underscores (max 20 characters).') ]) password = PasswordField('Password', validators=[ InputRequired(message='Password is required.'), Length(min=1, max=30, message='Password must be between 1 and 30 characters long.') ]) name = StringField('Name', validators=[ InputRequired(message='Name is required.'), Regexp(r'^[\u4e00-\u9fa5]{2,5}$', message='Name must be 2-5 Chinese characters.') ]) mailAddr = StringField('Email', validators=[ InputRequired(message='Email is required.'), Length(max=30, message='Email must be less than 30 characters long.'), Regexp(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', message='Invalid email format.') ]) privilege = StringField('Privilege', validators=[ InputRequired(message='Privilege is required.'), Regexp(r'^[0-9]$|^10$', message='Privilege must be an integer between 0 and 10.') ]) class QueryProfileForm(FlaskForm): username = StringField('Username', validators=[ InputRequired(message='Username is required.'), Regexp(r'^[a-zA-Z][a-zA-Z0-9_]{0,19}$', message='Username must start with a letter and can only contain letters, numbers, and underscores (max 20 characters).') ])