6
0

GetResizedFile.py 1014 B

123456789101112131415161718192021222324252627282930313233343536
  1. import cv2
  2. import os
  3. from PIL import Image
  4. from eventlet import tpool
  5. from flask import abort
  6. from flask import send_from_directory
  7. from flask.views import View
  8. from pycs.util import file_ops
  9. from pycs.database.File import File
  10. from pycs.database.Project import Project
  11. class GetResizedFile(View):
  12. """
  13. returns binary file after resizing
  14. """
  15. # pylint: disable=arguments-differ
  16. methods = ['GET']
  17. def dispatch_request(self, file_id: int, max_width: int, max_height: int = 2**24):
  18. # get file from database
  19. file = File.query.get(file_id)
  20. if file is None:
  21. abort(404, "File object not found")
  22. if not os.path.exists(file.absolute_path):
  23. abort(404, "File not found!")
  24. project = file.project
  25. # send data
  26. file_directory, file_name = tpool.execute(file_ops.resize_file,
  27. file.id, max_width, max_height)
  28. return send_from_directory(file_directory, file_name)