from flask import request, Blueprint from flask_restful import Resource, Api from os import path, remove, listdir import logging from models.config import STATIC_DIR statics_app = Blueprint('statics', __name__) api = Api(statics_app) logger = logging.getLogger(__name__) class StaticImg(Resource): IMG_DIR = path.join(STATIC_DIR, 'img') def post(self): img_data = request.files['image'] img_dir = path.join(self.IMG_DIR, request.args.get('type', type=str), request.args.get('filename', type=str)) img_data.save(img_dir) return {'filename': request.args.get('filename', type=str)} def delete(self): img_dir = path.join(self.IMG_DIR, request.args.get('type', type=str), request.args.get('filename', type=str)) remove(img_dir) return {'filename': request.args.get('filename', type=str)} def get_static_imgs_src(type_): def allow_ext(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS result = [] ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'} TYPE_IMG_DIR = path.join(STATIC_DIR, 'img', type_) base_src = path.join('/img', type_) for f in listdir(TYPE_IMG_DIR): if not allow_ext(f): continue result.append(path.join(base_src, f)) return result api.add_resource(StaticImg, '/api/statics/img')