281 lines
6.8 KiB
Python
281 lines
6.8 KiB
Python
from flask_wtf import FlaskForm
|
||
from wtforms import StringField, PasswordField, BooleanField, TextAreaField, SubmitField, DecimalField, SelectField
|
||
from wtforms.fields.html5 import DateField, EmailField
|
||
from wtforms.validators import InputRequired, Optional, Email, EqualTo
|
||
from flask_wtf.file import FileField # Cuz' wtforms' FileField is shitty
|
||
import app.utils.validators as vd
|
||
|
||
|
||
class RegistrationForm(FlaskForm):
|
||
username = StringField(
|
||
'Pseudonyme',
|
||
description='Ce nom est définitif !',
|
||
validators=[
|
||
InputRequired(),
|
||
vd.name.valid,
|
||
vd.name.available,
|
||
],
|
||
)
|
||
email = EmailField(
|
||
'Adresse Email',
|
||
validators=[
|
||
InputRequired(),
|
||
Email(message="Adresse email invalide."),
|
||
vd.email,
|
||
],
|
||
)
|
||
password = PasswordField(
|
||
'Mot de passe',
|
||
validators=[
|
||
InputRequired(),
|
||
vd.password.is_strong,
|
||
],
|
||
)
|
||
password2 = PasswordField(
|
||
'Répéter le mot de passe',
|
||
validators=[
|
||
InputRequired(),
|
||
EqualTo('password', message="Les mots de passe doivent être identiques."),
|
||
],
|
||
)
|
||
guidelines = BooleanField(
|
||
"""J'accepte les <a href="#">CGU</a>""",
|
||
validators=[
|
||
InputRequired(),
|
||
],
|
||
)
|
||
newsletter = BooleanField(
|
||
'Inscription à la newsletter',
|
||
description='Un mail par trimestre environ, pour être prévenu des concours, évènements et nouveautés.',
|
||
)
|
||
submit = SubmitField(
|
||
"S'inscrire",
|
||
)
|
||
|
||
|
||
class UpdateAccountForm(FlaskForm):
|
||
avatar = FileField(
|
||
'Avatar',
|
||
validators=[
|
||
Optional(),
|
||
vd.file.is_image,
|
||
vd.file.avatar_size,
|
||
],
|
||
)
|
||
email = EmailField(
|
||
'Adresse email',
|
||
validators=[
|
||
Optional(),
|
||
Email(message="Addresse email invalide."),
|
||
vd.email,
|
||
vd.password.old_password,
|
||
],
|
||
)
|
||
password = PasswordField(
|
||
'Nouveau mot de passe',
|
||
validators=[
|
||
Optional(),
|
||
vd.password.is_strong,
|
||
vd.password.old_password,
|
||
],
|
||
)
|
||
password2 = PasswordField(
|
||
'Répéter le mot de passe',
|
||
validators=[
|
||
Optional(),
|
||
EqualTo('password', message="Les mots de passe doivent être identiques."),
|
||
],
|
||
)
|
||
old_password = PasswordField(
|
||
'Mot de passe actuel',
|
||
validators=[
|
||
Optional(),
|
||
],
|
||
)
|
||
birthday = DateField(
|
||
'Anniversaire',
|
||
validators=[
|
||
Optional(),
|
||
],
|
||
)
|
||
signature = TextAreaField(
|
||
'Signature',
|
||
validators=[
|
||
Optional(),
|
||
]
|
||
)
|
||
biography = TextAreaField(
|
||
'Présentation',
|
||
validators=[
|
||
Optional(),
|
||
]
|
||
)
|
||
title = SelectField(
|
||
'Titre',
|
||
coerce=int,
|
||
validators=[
|
||
Optional(),
|
||
vd.own_title,
|
||
]
|
||
)
|
||
newsletter = BooleanField(
|
||
'Inscription à la newsletter',
|
||
description='Un mail par trimestre environ, pour être prévenu des concours, évènements et nouveautés.',
|
||
)
|
||
submit = SubmitField('Mettre à jour')
|
||
|
||
|
||
class DeleteAccountForm(FlaskForm):
|
||
delete = BooleanField(
|
||
'Confirmer la suppression',
|
||
validators=[
|
||
InputRequired(),
|
||
],
|
||
description='Attention, cette opération est irréversible !'
|
||
)
|
||
old_password = PasswordField(
|
||
'Mot de passe',
|
||
validators=[
|
||
InputRequired(),
|
||
vd.password.old_password,
|
||
],
|
||
)
|
||
submit = SubmitField(
|
||
'Supprimer le compte',
|
||
)
|
||
|
||
|
||
class AskResetPasswordForm(FlaskForm):
|
||
email = EmailField(
|
||
'Adresse email',
|
||
validators=[
|
||
Optional(),
|
||
Email(message="Addresse email invalide."),
|
||
],
|
||
)
|
||
submit = SubmitField('Valider')
|
||
|
||
|
||
class ResetPasswordForm(FlaskForm):
|
||
password = PasswordField(
|
||
'Mot de passe',
|
||
validators=[
|
||
Optional(),
|
||
vd.password.is_strong,
|
||
],
|
||
)
|
||
password2 = PasswordField(
|
||
'Répéter le mot de passe',
|
||
validators=[
|
||
Optional(),
|
||
EqualTo('password', message="Les mots de passe doivent être identiques."),
|
||
],
|
||
)
|
||
submit = SubmitField('Valider')
|
||
|
||
|
||
class AdminUpdateAccountForm(FlaskForm):
|
||
username = StringField(
|
||
'Pseudonyme',
|
||
validators=[
|
||
Optional(),
|
||
vd.name.valid,
|
||
vd.name.available,
|
||
],
|
||
)
|
||
avatar = FileField(
|
||
'Avatar',
|
||
validators=[
|
||
Optional(),
|
||
vd.file.is_image,
|
||
vd.file.avatar_size,
|
||
],
|
||
)
|
||
email = EmailField(
|
||
'Adresse email',
|
||
validators=[
|
||
Optional(),
|
||
Email(message="Addresse email invalide."),
|
||
vd.email,
|
||
],
|
||
)
|
||
email_confirmed = BooleanField(
|
||
"Confirmer l'email",
|
||
description="Si décoché, l'utilisateur devra demander explicitement un email "
|
||
"de validation, ou faire valider son adresse email par un administrateur.",
|
||
)
|
||
password = PasswordField(
|
||
'Mot de passe',
|
||
description="L'ancien mot de passe ne pourra pas être récupéré !",
|
||
validators=[
|
||
Optional(),
|
||
vd.password.is_strong,
|
||
],
|
||
)
|
||
xp = DecimalField(
|
||
'XP',
|
||
validators=[
|
||
Optional(),
|
||
]
|
||
)
|
||
birthday = DateField(
|
||
'Anniversaire',
|
||
validators=[
|
||
Optional(),
|
||
],
|
||
)
|
||
signature = TextAreaField(
|
||
'Signature',
|
||
validators=[
|
||
Optional(),
|
||
],
|
||
)
|
||
biography = TextAreaField(
|
||
'Présentation',
|
||
validators=[
|
||
Optional(),
|
||
],
|
||
)
|
||
title = SelectField(
|
||
'Titre',
|
||
coerce=int,
|
||
validators=[
|
||
Optional(),
|
||
# Admin can set any title to any member!
|
||
]
|
||
)
|
||
newsletter = BooleanField(
|
||
'Inscription à la newsletter',
|
||
description='Un mail par trimestre environ, pour être prévenu des concours, évènements et nouveautés.',
|
||
)
|
||
submit = SubmitField(
|
||
'Mettre à jour',
|
||
)
|
||
|
||
|
||
class AdminAccountEditTrophyForm(FlaskForm):
|
||
# Boolean inputs are generated on-the-fly from trophy list
|
||
submit = SubmitField(
|
||
'Modifier',
|
||
)
|
||
|
||
|
||
class AdminAccountEditGroupForm(FlaskForm):
|
||
# Boolean inputs are generated on-the-fly from group list
|
||
submit = SubmitField(
|
||
'Modifier',
|
||
)
|
||
|
||
|
||
class AdminDeleteAccountForm(FlaskForm):
|
||
delete = BooleanField(
|
||
'Confirmer la suppression',
|
||
validators=[
|
||
InputRequired(),
|
||
],
|
||
description='Attention, cette opération est irréversible !',
|
||
)
|
||
submit = SubmitField(
|
||
'Supprimer le compte',
|
||
)
|