fix delete and import errors

This commit is contained in:
hay-kot 2021-05-02 14:46:19 -08:00
commit 87f86d5d7f
3 changed files with 20 additions and 9 deletions

View file

@ -5,7 +5,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.services.image.image import scrape_image, write_image
from mealie.services.recipe.asset import check_asset
from mealie.services.recipe.media import check_assets, delete_assets
from mealie.services.scraper.scraper import create_from_url
from sqlalchemy.orm.session import Session
@ -59,7 +59,7 @@ def update_recipe(
print(recipe.assets)
if recipe_slug != recipe.slug:
check_asset(original_slug=recipe_slug, recipe=recipe)
check_assets(original_slug=recipe_slug, recipe=recipe)
return recipe
@ -77,7 +77,7 @@ def patch_recipe(
session, recipe_slug, new_data=data.dict(exclude_unset=True, exclude_defaults=True)
)
if recipe_slug != recipe.slug:
check_asset(original_slug=recipe_slug, recipe=recipe)
check_assets(original_slug=recipe_slug, recipe=recipe)
return recipe
@ -91,9 +91,9 @@ def delete_recipe(
""" Deletes a recipe by slug """
try:
delete_data = db.recipes.delete(session, recipe_slug)
return delete_data
recipes = db.recipes.delete(session, recipe_slug)
delete_assets(recipe_slug=recipe_slug)
return recipes
except Exception:
raise HTTPException(status.HTTP_400_BAD_REQUEST)

View file

@ -108,7 +108,7 @@ class ImportDatabase:
def _import_images(self, successful_imports: list[Recipe]):
image_dir = self.import_dir.joinpath("images")
if image_dir.exists():
if image_dir.exists(): # Migrate from before v0.5.0
for image in image_dir.iterdir():
item: Recipe = successful_imports.get(image.stem)
@ -121,6 +121,10 @@ class ImportDatabase:
if image.is_file():
shutil.copy(image, dest_dir)
else:
recipe_dir = self.import_dir.joinpath("recipes")
shutil.copytree(recipe_dir, app_dirs.RECIPE_DATA_DIR, dirs_exist_ok=True)
minify.migrate_images()
def import_themes(self):

View file

@ -1,4 +1,5 @@
from pathlib import Path
from shutil import copytree, rmtree
from mealie.core.config import app_dirs
from mealie.core.root_logger import get_logger
@ -7,16 +8,22 @@ from mealie.schema.recipe import Recipe
logger = get_logger()
def check_asset(original_slug, recipe: Recipe) -> Path:
def check_assets(original_slug, recipe: Recipe) -> Path:
if original_slug == recipe.slug:
return recipe.assets
current_dir = app_dirs.RECIPE_DATA_DIR.joinpath(original_slug)
try:
current_dir.rename(recipe.directory)
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}")
return current_dir.absolute()
def delete_assets(recipe_slug):
recipe_dir = Recipe(slug=recipe_slug).directory
rmtree(recipe_dir, ignore_errors=True)