delete assets when removed

This commit is contained in:
hay-kot 2021-05-03 19:08:03 -08:00
commit 64ca58de61
2 changed files with 18 additions and 15 deletions

View file

@ -62,8 +62,7 @@ def update_recipe(
recipe: Recipe = db.recipes.update(session, recipe_slug, data.dict()) recipe: Recipe = db.recipes.update(session, recipe_slug, data.dict())
print(recipe.assets) 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 return recipe
@ -80,8 +79,8 @@ def patch_recipe(
recipe: Recipe = db.recipes.patch( recipe: Recipe = db.recipes.patch(
session, recipe_slug, new_data=data.dict(exclude_unset=True, exclude_defaults=True) 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 return recipe

View file

@ -8,20 +8,24 @@ from mealie.schema.recipe import Recipe
logger = get_logger() logger = get_logger()
def check_assets(original_slug, recipe: Recipe) -> Path: def check_assets(original_slug, recipe: Recipe) -> None:
if original_slug == recipe.slug: if original_slug != recipe.slug:
return recipe.assets 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: except FileNotFoundError:
copytree(current_dir, recipe.directory, dirs_exist_ok=True) logger.error(f"Recipe Directory not Found: {original_slug}")
logger.info(f"Renaming Recipe Directory: {original_slug} -> {recipe.slug}")
except FileNotFoundError: all_asset_files = [x.file_name for x in recipe.assets]
logger.error(f"Recipe Directory not Found: {original_slug}") for file in recipe.asset_dir.iterdir():
logger.info(f"Renaming Recipe Directory: {original_slug} -> {recipe.slug}") file: Path
if file.is_dir():
return current_dir.absolute() continue
if file.name not in all_asset_files:
file.unlink()
def delete_assets(recipe_slug): def delete_assets(recipe_slug):