diff --git a/flaschengeist/plugins/pricelist/pricelist_controller.py b/flaschengeist/plugins/pricelist/pricelist_controller.py index e2c8469..71f9488 100644 --- a/flaschengeist/plugins/pricelist/pricelist_controller.py +++ b/flaschengeist/plugins/pricelist/pricelist_controller.py @@ -6,7 +6,7 @@ from flaschengeist.config import config from flaschengeist.database import db from .models import Drink, DrinkPrice, Ingredient, Tag, DrinkType, DrinkPriceVolume, DrinkIngredient, ExtraIngredient -from flaschengeist.utils.picture import save_picture, get_picture, delete_picture +from flaschengeist.utils.picture import save_picture, get_picture, delete_picture, get_no_image from uuid import uuid4 @@ -383,13 +383,13 @@ def save_drink_picture(identifier, file): def get_drink_picture(identifier, size=None): drink = get_drink(identifier) if not drink.uuid: - raise FileNotFoundError + return get_no_image() path = config["pricelist"]["path"] return get_picture(f"{path}/{drink.uuid}") def delete_drink_picture(identifier): drink = get_drink(identifier) - if not drink.uuid: + if drink.uuid: delete_picture(f"{config['pricelist']['path']}/{drink.uuid}") drink.uuid = None db.session.commit() diff --git a/flaschengeist/utils/no-image.png b/flaschengeist/utils/no-image.png new file mode 100644 index 0000000..240507b Binary files /dev/null and b/flaschengeist/utils/no-image.png differ diff --git a/flaschengeist/utils/picture.py b/flaschengeist/utils/picture.py index 529d322..89de66f 100644 --- a/flaschengeist/utils/picture.py +++ b/flaschengeist/utils/picture.py @@ -1,4 +1,4 @@ -import os, sys +import os, sys, shutil from PIL import Image from flask import Response from werkzeug.exceptions import BadRequest @@ -20,12 +20,18 @@ def save_picture(picture, path): if file_type != "png": image.save(f"{filename}.png", "PNG") os.remove(f"{filename}.{file_type}") - image.show() for thumbnail_size in thumbnail_sizes: work_image = image.copy() work_image.thumbnail(thumbnail_size) work_image.save(f"{filename}-{thumbnail_size[0]}.png", "PNG") +def get_no_image(): + path = os.path.dirname(__file__) + with open(f"{path}/no-image.png", "rb") as file: + image = file.read() + response = Response(image, mimetype="image/png") + response.add_etag() + return response def get_picture(path, size=None): try: @@ -45,8 +51,10 @@ def get_picture(path, size=None): response.add_etag() return response except: - raise FileNotFoundError + get_no_image() + + + def delete_picture(path): - os.remove(path) - + shutil.rmtree(path)