from flask_login import current_user from flask_wtf import FlaskForm from wtforms.validators import InputRequired, Optional from wtforms.fields import StringField, SubmitField, SelectField, SelectMultipleField, DateField from app.models.forum import Forum # TODO: compléter le formulaire de recherche avancée class SearchForm(FlaskForm): class Meta: csrf = False q = StringField('Rechercher', validators=[InputRequired()]) class AdvancedSearchForm(SearchForm): def generate_choices(): choices = {'Forum': [ 'Tous', 'Actualités', 'Aide et questions', 'Forum des projets', 'Vie communautaire', ], 'Programmes': [ 'Tous', 'Jeux', 'Utilitaires', 'Logiciels' ], 'Utilisateurs': [ 'Tous' ], 'Tutoriels': [ 'Tous', 'Basic', 'C/C++', 'Arduino', 'Python' ], 'Sprites': [ 'Tous', 'Personnages', 'Environnements', 'Objets', 'Interfaces' ]} # Forum reserved for admins and moderators f = Forum.query.filter_by(url='/admin').first() if (current_user.is_authenticated and current_user.can_access_forum(f)): choices['Forum'].append('Administration') # Forum reserved to members of CreativeCalc f = Forum.query.filter_by(url='/creativecalc').first() if (current_user.is_authenticated and current_user.can_access_forum(f)): choices['Forum'].append('CreativeCalc') return choices sortBy = SelectField('Trier', choices={'Pertinence': ['Pertinence'], 'Date': ['Date croissante', 'Date décroissante'], 'Ordre Alphabétique': [ 'Alphabétique croissant', 'Alphabétique décroissant',]}, validators=[Optional()]) date = DateField('Date de publication', validators=[Optional()]) scope = SelectMultipleField('', choices=generate_choices, validators=[Optional()]) submit = SubmitField('Affiner la recherche')