From 95efa3622831211a825ebe1cbe1e04f735c5e1eb Mon Sep 17 00:00:00 2001 From: Darks Date: Sat, 10 Aug 2019 00:07:50 +0200 Subject: [PATCH] =?UTF-8?q?Tentative=20(foireuse)=20de=20g=C3=A9n=C3=A9rer?= =?UTF-8?q?=20une=20liste=20de=20BooleanInput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/account.py | 11 ++----- app/routes/admin/account.py | 44 +++++++++++++++------------ app/templates/admin/edit_account.html | 19 ++++++------ 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/app/forms/account.py b/app/forms/account.py index 33c35c7..b72a5d1 100644 --- a/app/forms/account.py +++ b/app/forms/account.py @@ -50,14 +50,9 @@ class AdminUpdateAccountForm(FlaskForm): submit = SubmitField('Mettre à jour') -class AdminAccountAddTrophyForm(FlaskForm): - trophy = SelectField('Trophée', validators=[InputRequired()], coerce=int) - #trophy = SelectField('Trophée', validators=[DataRequired()]) - submit = SubmitField('Ajouter') - - -class AdminAccountDelTrophyForm(AdminAccountAddTrophyForm): - submit = SubmitField('Supprimer') +class AdminAccountEditTrophyForm(FlaskForm): + trophies = [BooleanField(t.name, validators=[Optional()]) for t in Trophy.query.all()] + submit = SubmitField('Modifier') class AdminDeleteAccountForm(FlaskForm): diff --git a/app/routes/admin/account.py b/app/routes/admin/account.py index c1c71fb..df82fac 100644 --- a/app/routes/admin/account.py +++ b/app/routes/admin/account.py @@ -1,9 +1,10 @@ from flask import flash, redirect, url_for +from wtforms import BooleanField from app.utils.priv_required import priv_required from app.models.users import Member from app.models.trophies import Trophy from app.forms.account import AdminUpdateAccountForm, AdminDeleteAccountForm, \ - AdminAccountAddTrophyForm, AdminAccountDelTrophyForm + AdminAccountEditTrophyForm from app.utils.render import render from app import app, db @@ -15,10 +16,11 @@ def adm_edit_account(user_id): form = AdminUpdateAccountForm(prefix="user") - addtrophy_form = AdminAccountAddTrophyForm(prefix="addtrophy") - addtrophy_form.trophy.choices = [(t.id, t.name) for t in Trophy.query.all()] - deltrophy_form = AdminAccountDelTrophyForm(prefix="deltrophy") - deltrophy_form.trophy.choices = [(t.id, t.name) for t in user.trophies] + for t in Trophy.query.all(): + setattr(AdminAccountEditTrophyForm, "t" + str(t.id), BooleanField(t.name)) + trophy_form = AdminAccountEditTrophyForm(prefix="trophy") + + print(trophy_form.t22) if form.submit.data: if form.validate_on_submit(): @@ -47,26 +49,28 @@ def adm_edit_account(user_id): else: flash('Erreur lors de la modification', 'error') - if addtrophy_form.submit.data: - if addtrophy_form.validate_on_submit(): - trophy = Trophy.query.get(addtrophy_form.trophy.data) - if trophy is not None: - user.add_trophy(trophy) - flash('Trophée ajouté', 'ok') + if trophy_form.submit.data: + if trophy_form.validate_on_submit(): + trophies = [(t.label, t.data) for t in trophy_form.trophies] + for t, set in trophies: + if set: + user.add_trophy(t) + else: + user.del_trophy(t) else: flash("Erreur lors de l'ajout du trophée", 'error') - if deltrophy_form.submit.data: - if deltrophy_form.validate_on_submit(): - trophy = Trophy.query.get(deltrophy_form.trophy.data) - if trophy is not None: - user.del_trophy(trophy) - flash('Trophée retiré', 'ok') - else: - flash("Erreur lors du retrait du trophée", 'error') + # if deltrophy_form.submit.data: + # if deltrophy_form.validate_on_submit(): + # trophy = Trophy.query.get(deltrophy_form.trophy.data) + # if trophy is not None: + # user.del_trophy(trophy) + # flash('Trophée retiré', 'ok') + # else: + # flash("Erreur lors du retrait du trophée", 'error') return render('admin/edit_account.html', user=user, form=form, - addtrophy_form=addtrophy_form, deltrophy_form=deltrophy_form) + trophy_form=trophy_form) @app.route('/admin/account//delete', methods=['GET', 'POST']) diff --git a/app/templates/admin/edit_account.html b/app/templates/admin/edit_account.html index 13e8616..e171cc0 100644 --- a/app/templates/admin/edit_account.html +++ b/app/templates/admin/edit_account.html @@ -92,19 +92,18 @@
- {{ addtrophy_form.hidden_tag() }} -

Accorder un trophée

-
- {{ addtrophy_form.trophy.label }} - {{ addtrophy_form.trophy }} - {% for error in addtrophy_form.trophy.errors %} - {{ error }} + {{ trophy_form.hidden_tag() }} +

Trophées

+
+ {% for trophy in trophy_form.trophies %} + {{ trophy.label }} + {{ trophy }} {% endfor %}
-
{{ addtrophy_form.submit(class_="bg-green") }}
+
{{ trophy_form.submit(class_="bg-green") }}
-
+ {# {{ deltrophy_form.hidden_tag() }}

Retirer un trophée

@@ -115,7 +114,7 @@ {% endfor %}
{{ deltrophy_form.submit(class_="bg-red") }}
-
+ #}

Supprimer le compte

Supprimer le compte