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