PCv5/app/forms/account.py

278 lines
6.7 KiB
Python
Raw Normal View History

2019-02-03 16:52:42 +01:00
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 DataRequired, Optional, Email, EqualTo
from flask_wtf.file import FileField # Cuz' wtforms' FileField is shitty
2019-02-03 16:52:42 +01:00
import app.utils.validators as vd
2019-02-03 16:52:42 +01:00
class RegistrationForm(FlaskForm):
username = StringField(
'Pseudonyme',
description='Ce nom est définitif !',
validators=[
DataRequired(),
vd.name_valid,
vd.name_available,
],
)
email = EmailField(
'Adresse Email',
validators=[
DataRequired(),
Email(message="Adresse email invalide."),
vd.email,
],
)
password = PasswordField(
'Mot de passe',
validators=[
DataRequired(),
vd.password,
],
)
password2 = PasswordField(
'Répéter le mot de passe',
validators=[
DataRequired(),
EqualTo('password', message="Les mots de passe doivent être identiques."),
],
)
guidelines = BooleanField(
"""J'accepte les <a href="#">CGU</a>""",
validators=[
DataRequired(),
],
)
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",
)
2019-02-03 16:52:42 +01:00
2019-02-03 16:52:42 +01:00
class UpdateAccountForm(FlaskForm):
avatar = FileField(
'Avatar',
validators=[
Optional(),
vd.avatar,
],
)
email = EmailField(
'Adresse email',
validators=[
Optional(),
Email(message="Addresse email invalide."),
vd.email,
vd.old_password,
],
)
password = PasswordField(
'Nouveau mot de passe',
validators=[
Optional(),
vd.password,
vd.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=[
DataRequired(),
],
description='Attention, cette opération est irréversible!'
)
old_password = PasswordField(
'Mot de passe',
validators=[
DataRequired(),
vd.old_password,
],
)
submit = SubmitField(
'Supprimer le compte',
)
2019-02-06 12:44:44 +01:00
2020-07-21 22:12:18 +02:00
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,
],
)
password2 = PasswordField(
'Répéter le mot de passe',
validators=[
Optional(),
EqualTo('password', message="Les mots de passe doivent être identiques."),
],
)
submit = SubmitField('Valider')
2019-02-06 12:44:44 +01:00
class AdminUpdateAccountForm(FlaskForm):
username = StringField(
'Pseudonyme',
validators=[
Optional(),
vd.name_valid,
],
)
avatar = FileField(
'Avatar',
validators=[
Optional(),
vd.avatar,
],
)
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,
],
)
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',
)
2019-02-06 12:44:44 +01:00
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',
)
2019-02-06 12:44:44 +01:00
class AdminDeleteAccountForm(FlaskForm):
delete = BooleanField(
'Confirmer la suppression',
validators=[
DataRequired(),
],
description='Attention, cette opération est irréversible!',
)
submit = SubmitField(
'Supprimer le compte',
)