from flask_wtf import FlaskForm from wtforms import StringField, SubmitField, TextAreaField, MultipleFileField, SelectField from wtforms.validators import InputRequired, Length import app.utils.validators as vd from app.utils.antibot_field import AntibotField class CommentForm(FlaskForm): message = TextAreaField( 'Message', validators=[InputRequired()]) attachments = MultipleFileField( 'Pièces-jointes', validators=[ vd.file.optional, vd.file.count, vd.file.extension, vd.file.size, vd.file.namelength ]) submit = SubmitField('Commenter') class AnonymousCommentForm(CommentForm): pseudo = StringField( 'Pseudo', validators=[InputRequired(), vd.name.valid, vd.name.available]) ab = AntibotField() class CommentEditForm(CommentForm): # Boolean fields to remove files are added dynamically attachments = MultipleFileField( 'Ajouter des pièces jointes', validators=[ vd.file.optional, vd.file.count, vd.file.extension, vd.file.size, vd.file.namelength ]) submit = SubmitField('Modifier') class AnonymousCommentEditForm(CommentEditForm, AnonymousCommentForm): pass class TopicCreationForm(CommentForm): title = StringField( 'Nom du sujet', validators=[InputRequired(), Length(min=3, max=128)]) submit = SubmitField('Créer le sujet') class AnonymousTopicCreationForm(TopicCreationForm, AnonymousCommentForm): ab = AntibotField() class TopicEditForm(CommentEditForm): title = StringField( 'Nom du sujet', validators=[InputRequired(), Length(min=3, max=128)]) # List of forums is generated at runtime forum = SelectField( 'Forum', validators=[InputRequired()]) submit = SubmitField('Modifier le sujet')