mirror of
https://github.com/wizarrrr/wizarr.git
synced 2026-04-19 05:28:33 -04:00
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
from flask_wtf import FlaskForm
|
|
from wtforms import PasswordField, StringField
|
|
from wtforms.validators import DataRequired, Email, EqualTo, Length, Regexp
|
|
|
|
from app.forms.validators import (
|
|
USERNAME_ALLOWED_CHARS_MESSAGE,
|
|
USERNAME_LENGTH_MESSAGE,
|
|
USERNAME_MAX_LENGTH,
|
|
USERNAME_MIN_LENGTH,
|
|
USERNAME_PATTERN,
|
|
strip_filter,
|
|
)
|
|
|
|
|
|
class JoinForm(FlaskForm):
|
|
username = StringField(
|
|
"Username",
|
|
filters=[strip_filter],
|
|
validators=[
|
|
DataRequired(),
|
|
Length(
|
|
min=USERNAME_MIN_LENGTH,
|
|
max=USERNAME_MAX_LENGTH,
|
|
message=USERNAME_LENGTH_MESSAGE,
|
|
),
|
|
Regexp(USERNAME_PATTERN, message=USERNAME_ALLOWED_CHARS_MESSAGE),
|
|
],
|
|
)
|
|
email = StringField(
|
|
"Email",
|
|
filters=[strip_filter],
|
|
validators=[DataRequired(), Email()],
|
|
)
|
|
password = PasswordField(
|
|
"Password",
|
|
validators=[
|
|
DataRequired(),
|
|
Length(min=8, message="Password must be at least 8 characters."),
|
|
Regexp(
|
|
r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$",
|
|
message="Password must contain at least one uppercase letter, one lowercase letter, and one number.",
|
|
),
|
|
],
|
|
)
|
|
confirm_password = PasswordField(
|
|
"Confirm password",
|
|
validators=[
|
|
DataRequired(),
|
|
EqualTo("password", message="Passwords must match."),
|
|
],
|
|
)
|
|
code = StringField(
|
|
"Invite Code",
|
|
filters=[strip_filter],
|
|
validators=[DataRequired(), Length(min=6, max=10)],
|
|
render_kw={"minlength": 6, "maxlength": 10},
|
|
)
|