48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from flask import Blueprint, request, render_template, jsonify, current_app
|
|
from utilities.tools import get_db
|
|
from werkzeug.utils import secure_filename
|
|
import os
|
|
|
|
upload_photo_bp = Blueprint('upload_photo', __name__, url_prefix='/upload', template_folder='.')
|
|
|
|
@upload_photo_bp.route('/photo', methods=['GET', 'POST'])
|
|
def get_page():
|
|
if request.method == "GET":
|
|
return render_get(), 200
|
|
elif request.method == "POST":
|
|
return upload()
|
|
|
|
def render_get():
|
|
return render_template('upload_photo.html')
|
|
|
|
def upload():
|
|
if not request.files['files[]']:
|
|
return jsonify({
|
|
'status': 'FAILED',
|
|
'error': '/upload/photo requires 1 photo'
|
|
}), 400
|
|
|
|
# TODO Button name data exists
|
|
# TODO Button name already exists validation
|
|
# TODO File input validation
|
|
print(request.files['files[]'])
|
|
|
|
file = request.files['files[]']
|
|
|
|
if file:
|
|
folder_path = os.path.join(current_app.config["config"]["upload_location"], request.form["name"])
|
|
if not os.path.exists(folder_path):
|
|
os.makedirs(folder_path)
|
|
|
|
filename = secure_filename(file.filename)
|
|
file.save(os.path.join(folder_path, filename))
|
|
|
|
get_db().insert(
|
|
"media",
|
|
["media_name", "media_uri"],
|
|
[request.form["name"], os.path.join(folder_path, filename)]
|
|
)
|
|
|
|
return jsonify({
|
|
'status': 'SUCCESS'
|
|
}), 200 |