From 4f6586e3f65f27a3bbbc21cc4ce89cee449539db Mon Sep 17 00:00:00 2001 From: Eragon Date: Tue, 6 Jun 2023 23:47:18 +0200 Subject: [PATCH] search: Add most of the choices for advanced search --- app/forms/search.py | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/app/forms/search.py b/app/forms/search.py index d33f333..6a4f8e9 100644 --- a/app/forms/search.py +++ b/app/forms/search.py @@ -1,7 +1,8 @@ +from flask_login import current_user from flask_wtf import FlaskForm -from wtforms import StringField, SubmitField -from wtforms.fields.datetime import DateField 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 @@ -9,5 +10,40 @@ class SearchForm(FlaskForm): q = StringField('Rechercher', validators=[InputRequired()]) class AdvancedSearchForm(SearchForm): - date = DateField('Date', validators=[Optional()]) + def generate_choices(): + choices = {'Forum': [ + 'Actualités', + 'Aide et questions', + 'Forum des projets', + 'Vie communautaire', + ], 'Programmes': [ + 'Jeux', + 'Utilitaires', + 'Logiciels' + ], 'Utilisateurs': [ + 'Tous' + ], 'Tutoriels': [ + 'Basic', + 'C/C++', + 'Arduino', + 'Python' + ], 'Sprites': [ + '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_athenticated and current_user.can_access_forum(f)): + choices['Forum'].append('CreativeCalc') + return choices + + sortBy = SelectField('Trier', choices={'date': ['croissant', 'décroissant'],'alphabétique': ['croissant', 'décroissant']}, validators=[Optional()]) + date = DateField('Date de publication', validators=[Optional()]) + scope = SelectMultipleField('', choices=generate_choices, validators=[Optional()]) submit = SubmitField('Affiner la recherche')