Browse Source

Modification de la zone d'admin des comptes

Retrait de la liste déroulante au profit d'une liste de checkbox. Il 
faudra ajouter les icones.
master
Darks 11 months ago
parent
commit
7f640a13e9
Signed by: Darks <l.gatin@neuf.fr> GPG Key ID: F61F10FA138E797C
5 changed files with 41 additions and 30 deletions
  1. +1
    -1
      app/forms/account.py
  2. +3
    -1
      app/models/users.py
  3. +17
    -12
      app/routes/admin/account.py
  4. +12
    -0
      app/static/css/form.css
  5. +8
    -16
      app/templates/admin/edit_account.html

+ 1
- 1
app/forms/account.py View File

@@ -51,7 +51,7 @@ class AdminUpdateAccountForm(FlaskForm):


class AdminAccountEditTrophyForm(FlaskForm):
trophies = [BooleanField(t.name, validators=[Optional()]) for t in Trophy.query.all()]
# Boolean inputs are generated on-the-fly from trophies list
submit = SubmitField('Modifier')




+ 3
- 1
app/models/users.py View File

@@ -210,7 +210,7 @@ class Member(User, db.Model):
the right to do this!
"""
if type(t) == int:
t = Trophy.get(t)
t = Trophy.query.get(t)
if type(t) == str:
t = Trophy.query.filter_by(name=t).first()
if t not in self.trophies:
@@ -225,6 +225,8 @@ class Member(User, db.Model):
Add a trophy to the current user. Check whether the request sender has
the right to do this!
"""
if type(t) == int:
t = Trophy.query.get(t)
if type(t) == str:
t = Trophy.query.filter_by(name=name).first()
if t in self.trophies:


+ 17
- 12
app/routes/admin/account.py View File

@@ -16,11 +16,13 @@ def adm_edit_account(user_id):

form = AdminUpdateAccountForm(prefix="user")

for t in Trophy.query.all():
setattr(AdminAccountEditTrophyForm, "t" + str(t.id), BooleanField(t.name))
trophy_form = AdminAccountEditTrophyForm(prefix="trophy")
class TrophyForm(AdminAccountEditTrophyForm):
pass

print(trophy_form.t22)
for t in Trophy.query.all():
setattr(TrophyForm, f't{t.id}', BooleanField(t.name))
setattr(TrophyForm, "user_trophies", [f't{t.id}' for t in user.trophies])
trophy_form = TrophyForm(prefix="trophies")

if form.submit.data:
if form.validate_on_submit():
@@ -51,12 +53,15 @@ def adm_edit_account(user_id):

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)
for id, field in trophy_form.__dict__.items():
if id[0] == "t":
print(f"id: {id[1:]}, name: {field.label}, checked={field.data}", end=" ")
if field.data:
print(f"Add trophy {id[1:]}")
user.add_trophy(int(id[1:]))
else:
print(f"Del trophy {id[1:]}")
user.del_trophy(int(id[1:]))
else:
flash("Erreur lors de l'ajout du trophée", 'error')

@@ -69,8 +74,8 @@ def adm_edit_account(user_id):
# else:
# flash("Erreur lors du retrait du trophée", 'error')

return render('admin/edit_account.html', user=user, form=form,
trophy_form=trophy_form)
return render('admin/edit_account.html', user=user,
form=form, trophy_form=trophy_form)


@app.route('/admin/account/<user_id>/delete', methods=['GET', 'POST'])


+ 12
- 0
app/static/css/form.css View File

@@ -65,3 +65,15 @@
font-size: 80%;
color: gray;
}

.trophies-panel {
display: flex; flex-wrap: wrap;
}
.trophies-panel > div {
margin: 3px 5px; padding: 3px;
border: 1px solid #969696;
border-radius: 3px;
}
.trophies-panel label {
margin-right: 5px;
}

+ 8
- 16
app/templates/admin/edit_account.html View File

@@ -95,27 +95,19 @@
{{ trophy_form.hidden_tag() }}
<h2>Trophées</h2>
<div class="trophies-panel">
{% for trophy in trophy_form.trophies %}
{{ trophy.label }}
{{ trophy }}
{% for id, input in trophy_form.__dict__.items() %}
{% if id[0] == "t" %}
<div>
{# TODO: add trophies icons #}
{{ input(checked=id in trophy_form.user_trophies) }}
{{ input.label }}
</div>
{% endif %}
{% endfor %}
</div>
<div>{{ trophy_form.submit(class_="bg-green") }}</div>
</form>

{# <form action="{{ url_for('adm_edit_account', user_id=user.id) }}" method="post">
{{ deltrophy_form.hidden_tag() }}
<h2>Retirer un trophée</h2>
<div>
{{ deltrophy_form.trophy.label }}
{{ deltrophy_form.trophy }}
{% for error in deltrophy_form.trophy.errors %}
<span class="msgerror">{{ error }}</span>
{% endfor %}
</div>
<div>{{ deltrophy_form.submit(class_="bg-red") }}</div>
</form> #}

<h2 style="margin-top:30px;">Supprimer le compte</h2>
<a href="{{ url_for('adm_delete_account', user_id=user.id) }}" class="button bg-red">Supprimer le compte</a>



Loading…
Cancel
Save