64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
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')
|