64 lines
2.8 KiB
Python
64 lines
2.8 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': [
|
|
('all-forum', 'Tous les forums'),
|
|
('news-forum', 'Actualités'),
|
|
('help-and-questions-forum', 'Aide et questions'),
|
|
('projects-forum', 'Forum des projets'),
|
|
('community-forum', 'Vie communautaire'),
|
|
], 'Programmes': [
|
|
('all-programs', 'Tous les programmes'),
|
|
('games-programs', 'Jeux'),
|
|
('utilities-programs', 'Utilitaires'),
|
|
('software-programs', 'Logiciels')
|
|
], 'Utilisateurs': [
|
|
('all-users', 'Tous les utilisateurs')
|
|
], 'Tutoriels': [
|
|
('all-tutorials', 'Tous les tutoriels'),
|
|
('basic-tutorials', 'Basic'),
|
|
('c-cpp-tutorials', 'C/C++'),
|
|
('arduino-tutorials', 'Arduino'),
|
|
('python-tutorials', 'Python')
|
|
], 'Sprites': [
|
|
('all-sprites', 'Tous les sprites'),
|
|
('characters-sprites', 'Personnages'),
|
|
('environnement-sprites', 'Environnements'),
|
|
('objects-sprites', 'Objets'),
|
|
('interfaces-sprites', 'Interfaces')
|
|
]}
|
|
# Forum reserved for admins and moderators
|
|
f = Forum.query.filter_by(prefix='admin').first()
|
|
if (current_user.is_authenticated and current_user.can_access_forum(f)):
|
|
choices['Forum'].append(('administration-forum', 'Administration'))
|
|
# Forum reserved to members of CreativeCalc
|
|
f = Forum.query.filter_by(prefix='creativecalc').first()
|
|
if (current_user.is_authenticated and current_user.can_access_forum(f)):
|
|
choices['Forum'].append(('creativecalc-forum', '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')
|