|
|
from flask_wtf import FlaskForm |
|
|
from wtforms import TextAreaField, MultipleFileField, StringField, SubmitField |
|
|
from wtforms.validators import Optional, Length |
|
|
|
|
|
class PostForm(FlaskForm): |
|
|
nickname = StringField('Pseudo', validators=[Optional(), Length(max=50)]) |
|
|
content = TextAreaField('Message', validators=[Optional(), Length(max=2000)]) |
|
|
files = MultipleFileField('Fichiers', validators=[Optional()]) |
|
|
honeypot = StringField('Site Web', validators=[Optional()]) |
|
|
submit = SubmitField('Envoyer') |
|
|
|
|
|
def validate(self, extra_validators=None): |
|
|
initial_validation = super(PostForm, self).validate(extra_validators) |
|
|
if not initial_validation: |
|
|
return False |
|
|
|
|
|
|
|
|
if not self.content.data and not self.files.data: |
|
|
|
|
|
has_files = False |
|
|
if self.files.data: |
|
|
for f in self.files.data: |
|
|
if f.filename: |
|
|
has_files = True |
|
|
break |
|
|
|
|
|
if not has_files and not self.content.data: |
|
|
self.content.errors.append('Vous devez fournir un message ou un fichier.') |
|
|
return False |
|
|
|
|
|
|
|
|
if self.honeypot.data: |
|
|
return False |
|
|
|
|
|
return True |
|
|
|