From 51d0ce112914df6e779dac484cbc2cec45d698f8 Mon Sep 17 00:00:00 2001 From: Darks Date: Tue, 10 Dec 2019 00:38:04 +0100 Subject: [PATCH] Meilleure gestion des erreurs sur le changement d'avatar --- app/models/users.py | 11 ++++------- app/templates/account/account.html | 3 +++ app/templates/admin/edit_account.html | 3 +++ app/utils/validators.py | 6 +++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/models/users.py b/app/models/users.py index edaee13..136d558 100644 --- a/app/models/users.py +++ b/app/models/users.py @@ -193,13 +193,10 @@ class Member(User): self.xp = data["xp"] def set_avatar(self, avatar): - try: - size = 128, 128 - im = Image.open(avatar) - im.thumbnail(size, Image.ANTIALIAS) - im.save(V5Config.AVATARS_FOLDER + self.avatar, 'PNG') - except IOError: - flash("Avatar invalide", 'error') + size = 128, 128 + im = Image.open(avatar) + im.thumbnail(size, Image.ANTIALIAS) + im.save(V5Config.AVATARS_FOLDER + self.avatar, 'PNG') def get_public_data(self): """Returns the public information of the member.""" diff --git a/app/templates/account/account.html b/app/templates/account/account.html index a7cf6ba..d3f8cc3 100644 --- a/app/templates/account/account.html +++ b/app/templates/account/account.html @@ -16,6 +16,9 @@ {{ form.avatar }} + {% for error in form.avatar.errors %} + {{ error }} + {% endfor %}
{{ form.email.label }} diff --git a/app/templates/admin/edit_account.html b/app/templates/admin/edit_account.html index 6263e5f..d5b8a01 100644 --- a/app/templates/admin/edit_account.html +++ b/app/templates/admin/edit_account.html @@ -17,6 +17,9 @@ {{ form.avatar }}
+ {% for error in form.avatar.errors %} + {{ error }} + {% endfor %}
diff --git a/app/utils/validators.py b/app/utils/validators.py index 71c81d3..8820b91 100644 --- a/app/utils/validators.py +++ b/app/utils/validators.py @@ -1,5 +1,6 @@ from flask_login import current_user from wtforms.validators import ValidationError +from PIL import Image from app.models.users import Member from app.utils.valid_name import valid_name from app.utils.unicode_names import normalize @@ -96,7 +97,10 @@ def password(form, password): def avatar(form, avatar): - pass + try: + Image.open(avatar.data) + except IOError: + raise ValidationError("Avatar invalide") def old_password(form, field):