import os import uuid import pathlib ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'bmp'} def allowed_file(filename) -> bool: """ Ensures only filenames ending with the correct extension are allowed. Note: This does not verify that the content inside of the file matches the type specified """ return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def save_image(file) -> str | None: """ Saves a given file to disk with a random UUID4 generated filename. Returns the filename as a string. """ # Ensure that the correct file type is uploaded if file is None or not allowed_file(file.filename): return None # Create the product object and push to database filename = str(uuid.uuid4()) + pathlib.Path(file.filename).suffix path = os.environ.get('FILESTORE') file.save(os.path.join(path, filename)) return filename def create_directory(dir: str): """ Creates the given directory string is not alreay made """ try: os.makedirs(dir) except FileExistsError: pass def remove_file(dir: str): """ Removes a given file if it is present at the given dir """ try: os.remove(dir) except FileNotFoundError: pass except IsADirectoryError: pass