Spaces:
Runtime error
Runtime error
# Copy from https://github.com/silentsokolov/flask-thumbnails/blob/master/flask_thumbnails/storage_backends.py | |
import errno | |
import os | |
from abc import ABC, abstractmethod | |
class BaseStorageBackend(ABC): | |
def __init__(self, app=None): | |
self.app = app | |
def read(self, filepath, mode="rb", **kwargs): | |
raise NotImplementedError | |
def exists(self, filepath): | |
raise NotImplementedError | |
def save(self, filepath, data): | |
raise NotImplementedError | |
class FilesystemStorageBackend(BaseStorageBackend): | |
def read(self, filepath, mode="rb", **kwargs): | |
with open(filepath, mode) as f: # pylint: disable=unspecified-encoding | |
return f.read() | |
def exists(self, filepath): | |
return os.path.exists(filepath) | |
def save(self, filepath, data): | |
directory = os.path.dirname(filepath) | |
if not os.path.exists(directory): | |
try: | |
os.makedirs(directory) | |
except OSError as e: | |
if e.errno != errno.EEXIST: | |
raise | |
if not os.path.isdir(directory): | |
raise IOError("{} is not a directory".format(directory)) | |
with open(filepath, "wb") as f: | |
f.write(data) | |