store user picture w/ relative path instead of absolute path
This commit is contained in:
parent
ea545b6a16
commit
ace28a69af
@ -40,7 +40,6 @@ def get_activities(user_id, filter_type):
|
|||||||
if sport_id:
|
if sport_id:
|
||||||
sport = Sport.query.filter_by(id=sport_id).first()
|
sport = Sport.query.filter_by(id=sport_id).first()
|
||||||
if not sport:
|
if not sport:
|
||||||
print('not sport')
|
|
||||||
response_object = {
|
response_object = {
|
||||||
'status': 'not found',
|
'status': 'not found',
|
||||||
'message': 'Sport does not exist.'
|
'message': 'Sport does not exist.'
|
||||||
|
@ -705,6 +705,25 @@ def test_update_user_picture(app, user_1):
|
|||||||
assert data['status'] == 'success'
|
assert data['status'] == 'success'
|
||||||
assert data['message'] == 'User picture updated.'
|
assert data['message'] == 'User picture updated.'
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
assert 'avatar.png' in user_1.picture
|
||||||
|
|
||||||
|
response = client.post(
|
||||||
|
'/api/auth/picture',
|
||||||
|
data=dict(
|
||||||
|
file=(BytesIO(b'avatar2'), 'avatar2.png')
|
||||||
|
),
|
||||||
|
headers=dict(
|
||||||
|
content_type='multipart/form-data',
|
||||||
|
authorization='Bearer ' +
|
||||||
|
json.loads(resp_login.data.decode())['auth_token']
|
||||||
|
)
|
||||||
|
)
|
||||||
|
data = json.loads(response.data.decode())
|
||||||
|
assert data['status'] == 'success'
|
||||||
|
assert data['message'] == 'User picture updated.'
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert 'avatar.png' not in user_1.picture
|
||||||
|
assert 'avatar2.png' in user_1.picture
|
||||||
|
|
||||||
|
|
||||||
def test_update_user_no_picture(app, user_1):
|
def test_update_user_no_picture(app, user_1):
|
||||||
|
@ -6,6 +6,7 @@ from flask import Blueprint, current_app, jsonify, request
|
|||||||
from sqlalchemy import exc, or_
|
from sqlalchemy import exc, or_
|
||||||
from werkzeug.utils import secure_filename
|
from werkzeug.utils import secure_filename
|
||||||
|
|
||||||
|
from ..activities.utils_files import get_absolute_file_path
|
||||||
from .models import User
|
from .models import User
|
||||||
from .utils import authenticate, register_controls, verify_extension
|
from .utils import authenticate, register_controls, verify_extension
|
||||||
|
|
||||||
@ -250,14 +251,21 @@ def edit_picture(user_id):
|
|||||||
)
|
)
|
||||||
if not os.path.exists(dirpath):
|
if not os.path.exists(dirpath):
|
||||||
os.makedirs(dirpath)
|
os.makedirs(dirpath)
|
||||||
filepath = os.path.join(dirpath, filename)
|
absolute_picture_path = os.path.join(dirpath, filename)
|
||||||
|
relative_picture_path = os.path.join(
|
||||||
|
'pictures',
|
||||||
|
str(user_id),
|
||||||
|
filename
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user = User.query.filter_by(id=user_id).first()
|
user = User.query.filter_by(id=user_id).first()
|
||||||
if user.picture is not None and os.path.isfile(user.picture):
|
if user.picture is not None:
|
||||||
os.remove(user.picture)
|
old_picture_path = get_absolute_file_path(user.picture)
|
||||||
file.save(filepath)
|
if os.path.isfile(get_absolute_file_path(old_picture_path)):
|
||||||
user.picture = filepath
|
os.remove(old_picture_path)
|
||||||
|
file.save(absolute_picture_path)
|
||||||
|
user.picture = relative_picture_path
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
response_object = {
|
response_object = {
|
||||||
@ -281,8 +289,9 @@ def edit_picture(user_id):
|
|||||||
def del_picture(user_id):
|
def del_picture(user_id):
|
||||||
try:
|
try:
|
||||||
user = User.query.filter_by(id=user_id).first()
|
user = User.query.filter_by(id=user_id).first()
|
||||||
if os.path.isfile(user.picture):
|
picture_path = get_absolute_file_path(user.picture)
|
||||||
os.remove(user.picture)
|
if os.path.isfile(picture_path):
|
||||||
|
os.remove(picture_path)
|
||||||
user.picture = None
|
user.picture = None
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from flask import Blueprint, jsonify, send_file
|
from flask import Blueprint, jsonify, send_file
|
||||||
|
|
||||||
|
from ..activities.utils_files import get_absolute_file_path
|
||||||
from .models import User
|
from .models import User
|
||||||
|
|
||||||
users_blueprint = Blueprint('users', __name__)
|
users_blueprint = Blueprint('users', __name__)
|
||||||
@ -50,7 +51,8 @@ def get_picture(user_id):
|
|||||||
if not user:
|
if not user:
|
||||||
return jsonify(response_object), 404
|
return jsonify(response_object), 404
|
||||||
else:
|
else:
|
||||||
return send_file(user.picture)
|
picture_path = get_absolute_file_path(user.picture)
|
||||||
|
return send_file(picture_path)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return jsonify(response_object), 404
|
return jsonify(response_object), 404
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user