From 64ca58de617a61cc6b930ff01dc4ebeccb0c12fb Mon Sep 17 00:00:00 2001 From: hay-kot Date: Mon, 3 May 2021 19:08:03 -0800 Subject: [PATCH] delete assets when removed --- mealie/routes/recipe/recipe_crud_routes.py | 7 +++--- mealie/services/recipe/media.py | 26 +++++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/mealie/routes/recipe/recipe_crud_routes.py b/mealie/routes/recipe/recipe_crud_routes.py index a26b5b09e..6604b84e6 100644 --- a/mealie/routes/recipe/recipe_crud_routes.py +++ b/mealie/routes/recipe/recipe_crud_routes.py @@ -62,8 +62,7 @@ def update_recipe( recipe: Recipe = db.recipes.update(session, recipe_slug, data.dict()) print(recipe.assets) - if recipe_slug != recipe.slug: - check_assets(original_slug=recipe_slug, recipe=recipe) + check_assets(original_slug=recipe_slug, recipe=recipe) return recipe @@ -80,8 +79,8 @@ def patch_recipe( recipe: Recipe = db.recipes.patch( session, recipe_slug, new_data=data.dict(exclude_unset=True, exclude_defaults=True) ) - if recipe_slug != recipe.slug: - check_assets(original_slug=recipe_slug, recipe=recipe) + + check_assets(original_slug=recipe_slug, recipe=recipe) return recipe diff --git a/mealie/services/recipe/media.py b/mealie/services/recipe/media.py index d4fe93df3..9be892143 100644 --- a/mealie/services/recipe/media.py +++ b/mealie/services/recipe/media.py @@ -8,20 +8,24 @@ from mealie.schema.recipe import Recipe logger = get_logger() -def check_assets(original_slug, recipe: Recipe) -> Path: - if original_slug == recipe.slug: - return recipe.assets +def check_assets(original_slug, recipe: Recipe) -> None: + if original_slug != recipe.slug: + current_dir = app_dirs.RECIPE_DATA_DIR.joinpath(original_slug) - current_dir = app_dirs.RECIPE_DATA_DIR.joinpath(original_slug) + try: + copytree(current_dir, recipe.directory, dirs_exist_ok=True) - try: - copytree(current_dir, recipe.directory, dirs_exist_ok=True) + except FileNotFoundError: + logger.error(f"Recipe Directory not Found: {original_slug}") + logger.info(f"Renaming Recipe Directory: {original_slug} -> {recipe.slug}") - except FileNotFoundError: - logger.error(f"Recipe Directory not Found: {original_slug}") - logger.info(f"Renaming Recipe Directory: {original_slug} -> {recipe.slug}") - - return current_dir.absolute() + all_asset_files = [x.file_name for x in recipe.assets] + for file in recipe.asset_dir.iterdir(): + file: Path + if file.is_dir(): + continue + if file.name not in all_asset_files: + file.unlink() def delete_assets(recipe_slug):