Premier jet sur les avatars
This commit is contained in:
parent
d447372bf3
commit
9341c5883c
|
@ -2,14 +2,15 @@ from datetime import date
|
|||
from app import app, db
|
||||
from flask import flash
|
||||
from flask_login import UserMixin
|
||||
from os.path import isfile
|
||||
from app.models.privs import SpecialPrivilege, Group, GroupMember, \
|
||||
GroupPrivilege
|
||||
from app.models.trophies import Trophy, TrophyMember
|
||||
from app.models.notification import Notification
|
||||
import app.utils.unicode_names as unicode_names
|
||||
from app.utils.notify import notify
|
||||
from config import V5Config
|
||||
import app.utils.ldap as ldap
|
||||
from config import V5Config
|
||||
|
||||
import werkzeug.security
|
||||
import re
|
||||
|
@ -78,7 +79,7 @@ class Member(User):
|
|||
# Avatars # TODO: rendre ça un peu plus propre
|
||||
@property
|
||||
def avatar(self):
|
||||
return 'avatars/' + str(self.id) + '.png'
|
||||
return str(self.id) + '.png'
|
||||
|
||||
@property
|
||||
def level(self):
|
||||
|
@ -382,8 +383,8 @@ class Member(User):
|
|||
# TODO: Trophy "actif"
|
||||
|
||||
if context in ["on-profile-update", None]:
|
||||
# TODO: add a better condition (this is for test)
|
||||
self.add_trophy("Artiste")
|
||||
if isfile(V5Config.UPLOAD_FOLDER + '/avatars/' + filename):
|
||||
self.add_trophy("Artiste")
|
||||
|
||||
db.session.merge(self)
|
||||
db.session.commit()
|
||||
|
|
|
@ -16,7 +16,9 @@ def edit_account():
|
|||
if form.validate_on_submit():
|
||||
if form.avatar.data:
|
||||
f = form.avatar.data
|
||||
f.save("./app/static/" + current_user.avatar)
|
||||
f.save(V5Config.UPLOAD_FOLDER + '/avatars/'
|
||||
+ current_user.avatar)
|
||||
current_user.update_trophies('on-profile-update')
|
||||
current_user.update(
|
||||
email=form.email.data or None,
|
||||
password=form.password.data or None,
|
||||
|
|
|
@ -9,6 +9,7 @@ from app.forms.account import AdminUpdateAccountForm, AdminDeleteAccountForm, \
|
|||
from app.utils.render import render
|
||||
from app.utils.notify import notify
|
||||
from app import app, db
|
||||
from config import V5Config
|
||||
|
||||
|
||||
@app.route('/admin/account/<user_id>/edit', methods=['GET', 'POST'])
|
||||
|
@ -30,7 +31,8 @@ def adm_edit_account(user_id):
|
|||
if form.validate_on_submit():
|
||||
if form.avatar.data:
|
||||
f = form.avatar.data
|
||||
f.save("./app/static/" + user.avatar)
|
||||
f.save(V5Config.UPLOAD_FOLDER + '/avatars/'
|
||||
+ current_user.avatar)
|
||||
|
||||
newname = form.username.data
|
||||
names = list(Member.query.filter(Member.id != user.id).values(Member.name))
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
from flask import redirect, url_for
|
||||
from flask import redirect, url_for, send_from_directory
|
||||
from werkzeug.utils import secure_filename
|
||||
import os.path
|
||||
from app import app
|
||||
from app.models.users import Member
|
||||
from app.utils import unicode_names
|
||||
from app.utils.render import render
|
||||
from config import V5Config
|
||||
|
||||
|
||||
@app.route('/user/<username>')
|
||||
|
@ -16,3 +19,11 @@ def user(username):
|
|||
def user_by_id(user_id):
|
||||
member = Member.query.filter_by(id=user_id).first_or_404()
|
||||
return redirect(url_for('user', username=member.name))
|
||||
|
||||
@app.route('/avatar/<filename>')
|
||||
def avatar(filename):
|
||||
filename = secure_filename(filename) # No h4ckers allowed
|
||||
if os.path.isfile(V5Config.UPLOAD_FOLDER + '/avatars/' + filename):
|
||||
return send_from_directory(V5Config.UPLOAD_FOLDER + '/avatars',
|
||||
filename)
|
||||
return redirect(url_for('static', filename='images/default_avatar.png'))
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div>
|
||||
{{ form.avatar.label }}
|
||||
<div>
|
||||
<img class="avatar" src="{{ url_for('static', filename=current_user.avatar) }}" meta="{{ current_user.avatar }}" />
|
||||
<img class="avatar" src="{{ url_for('avatar', filename=current_user.avatar) }}" meta="{{ current_user.avatar }}" />
|
||||
{{ form.avatar }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<div>
|
||||
{{ form.avatar.label }}
|
||||
<div>
|
||||
<img class="avatar" src="{{ url_for('static', filename=user.avatar) }}" meta="{{ user.avatar }}" />
|
||||
<img class="avatar" src="{{ url_for('avatar', filename=user.avatar) }}" meta="{{ user.avatar }}" />
|
||||
{{ form.avatar }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div>
|
||||
<h2>
|
||||
<a href="{{ url_for('user', username=current_user.name) }}">
|
||||
<img src="{{ url_for('static', filename=current_user.avatar) }}"></a>
|
||||
<img src="{{ url_for('avatar', filename=current_user.avatar) }}"></a>
|
||||
<a href="{{ url_for('user', username=current_user.name) }}">
|
||||
{{ current_user.name }}</a>
|
||||
</h2>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% macro profile(member) %}
|
||||
<div class=profile>
|
||||
<img class=profile-avatar src="{{ url_for('static', filename=member.avatar) }}" alt="Avatar de {{ member.name }}">
|
||||
<img class=profile-avatar src="{{ url_for('avatar', filename=member.avatar) }}" alt="Avatar de {{ member.name }}">
|
||||
<div>
|
||||
<div class=profile-name><a href="{{ url_for('user', username=member.name) }}">{{ member.name }}</a></div>
|
||||
<div class=profile-title>Membre</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% macro profile(member) %}
|
||||
<div class=profile>
|
||||
<img class=profile-avatar src="{{ url_for('static', filename=member.avatar) }}" alt="Avatar de {{ member.name }}">
|
||||
<img class=profile-avatar src="{{ url_for('avatar', filename=member.avatar) }}" alt="Avatar de {{ member.name }}">
|
||||
<div>
|
||||
<div class=profile-name>{{ member.name }}</div>
|
||||
<div class=profile-title>Membre</div>
|
||||
|
|
Loading…
Reference in New Issue