diff --git a/mealie/db/models/recipe/recipe.py b/mealie/db/models/recipe/recipe.py index e83134f99..28e512db0 100644 --- a/mealie/db/models/recipe/recipe.py +++ b/mealie/db/models/recipe/recipe.py @@ -60,7 +60,7 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): @validates("name") def validate_name(self, key, name): - assert not name == "" + assert name != "" return name def __init__( @@ -92,11 +92,7 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): self.image = image self.recipeCuisine = recipeCuisine - if self.nutrition: - self.nutrition = Nutrition(**nutrition) - else: - self.nutrition = Nutrition() - + self.nutrition = Nutrition(**nutrition) if self.nutrition else Nutrition() self.tools = [Tool(tool=x) for x in tools] if tools else [] self.recipeYield = recipeYield diff --git a/mealie/routes/recipe/recipe_crud_routes.py b/mealie/routes/recipe/recipe_crud_routes.py index e696f87d9..b02cec248 100644 --- a/mealie/routes/recipe/recipe_crud_routes.py +++ b/mealie/routes/recipe/recipe_crud_routes.py @@ -7,7 +7,7 @@ from mealie.db.db_setup import generate_session from mealie.routes.deps import get_current_user from mealie.schema.recipe import Recipe, RecipeURLIn from mealie.schema.snackbar import SnackResponse -from mealie.services.image.image import IMG_OPTIONS, delete_image, read_image, write_image +from mealie.services.image.image import IMG_OPTIONS, delete_image, read_image, rename_image, write_image from mealie.services.scraper.scraper import create_from_url from sqlalchemy.orm.session import Session @@ -61,6 +61,9 @@ def update_recipe( recipe: Recipe = db.recipes.update(session, recipe_slug, data.dict()) + if recipe_slug != recipe.slug: + rename_image(original_slug=recipe_slug, new_slug=recipe.slug) + return recipe.slug diff --git a/mealie/services/image/image.py b/mealie/services/image/image.py index d85536b9f..04e01a492 100644 --- a/mealie/services/image/image.py +++ b/mealie/services/image/image.py @@ -29,7 +29,6 @@ def read_image(recipe_slug: str, image_type: str = "original") -> Path: Returns: Path: [description] """ - print(image_type) recipe_slug = recipe_slug.split(".")[0] # Incase of File Name recipe_image_dir = app_dirs.IMG_DIR.joinpath(recipe_slug) @@ -39,6 +38,18 @@ def read_image(recipe_slug: str, image_type: str = "original") -> Path: return None +def rename_image(original_slug, new_slug) -> Path: + current_path = app_dirs.IMG_DIR.joinpath(original_slug) + new_path = app_dirs.IMG_DIR.joinpath(new_slug) + + try: + new_path = current_path.rename(new_path) + except FileNotFoundError: + logger.error(f"Image Directory {original_slug} Doesn't Exist") + + return new_path + + def write_image(recipe_slug: str, file_data: bytes, extension: str) -> Path.name: try: delete_image(recipe_slug) diff --git a/mealie/services/image/minify.py b/mealie/services/image/minify.py index 35215cf08..472e3d305 100644 --- a/mealie/services/image/minify.py +++ b/mealie/services/image/minify.py @@ -2,7 +2,7 @@ import shutil from pathlib import Path from mealie.core.config import app_dirs -from PIL import Image, UnidentifiedImageError +from PIL import Image def minify_image(image_file: Path, min_dest: Path, tiny_dest: Path): @@ -24,7 +24,7 @@ def minify_image(image_file: Path, min_dest: Path, tiny_dest: Path): tiny_image = crop_center(img) tiny_image.save(tiny_dest, quality=70) - except: + except Exception: shutil.copy(image_file, min_dest) shutil.copy(image_file, tiny_dest)