import cv2 import os from PIL import Image from eventlet import tpool from flask import abort from flask import send_from_directory from flask.views import View from pycs.util import file_ops from pycs.database.File import File from pycs.database.Project import Project class GetResizedFile(View): """ returns binary file after resizing """ # pylint: disable=arguments-differ methods = ['GET'] def dispatch_request(self, file_id: int, max_width: int, max_height: int = 2**24): # get file from database file = File.query.get(file_id) if file is None: abort(404, "File object not found") if not os.path.exists(file.absolute_path): abort(404, "File not found!") project = file.project # send data file_directory, file_name = tpool.execute(file_ops.resize_file, file.id, max_width, max_height) return send_from_directory(file_directory, file_name)