diff --git a/app/models/users.py b/app/models/users.py index 6281732..c427314 100644 --- a/app/models/users.py +++ b/app/models/users.py @@ -18,6 +18,7 @@ import werkzeug.security import re import math import app +import os class User(UserMixin, db.Model): @@ -198,15 +199,22 @@ class Member(User): self.xp = data["xp"] def set_avatar(self, avatar): + # Save old avatar filepath + old_avatar = V5Config.AVATARS_FOLDER + self.avatar + # Resize & convert image size = 128, 128 im = Image.open(avatar) im.thumbnail(size, Image.ANTIALIAS) + # Change avatar id # TODO: verify concurrency behavior current_id = db.session.query(SQLfunc.max(Member.avatar_id)).first()[0] self.avatar_id = current_id + 1 db.session.merge(self) db.session.commit() + # Save the new avatar im.save(V5Config.AVATARS_FOLDER + self.avatar, 'PNG') + # If nothing has failed, remove old one + os.remove(old_avatar) def get_public_data(self): """ Returns the public information of the member."""