Exemple #1
0
    def import_recipes(self):
        recipe_dir: Path = self.import_dir.joinpath("recipes")

        imports = []
        successful_imports = []

        for recipe in recipe_dir.glob("*.json"):
            with open(recipe, "r") as f:
                recipe_dict = json.loads(f.read())
                recipe_dict = ImportDatabase._recipe_migration(recipe_dict)
            try:
                recipe_obj = Recipe(**recipe_dict)
                recipe_obj.save_to_db(self.session)
                import_status = RecipeImport(name=recipe_obj.name,
                                             slug=recipe_obj.slug,
                                             status=True)
                imports.append(import_status)
                successful_imports.append(recipe.stem)
                logger.info(f"Imported: {recipe.stem}")

            except Exception as inst:
                logger.error(inst)
                logger.info(f"Failed Import: {recipe.stem}")
                import_status = RecipeImport(
                    name=recipe.stem,
                    slug=recipe.stem,
                    status=False,
                    exception=str(inst),
                )
                imports.append(import_status)

        self._import_images(successful_imports)

        return imports
def create_from_url(url: str) -> dict:
    recipe_data = process_recipe_url(url)

    with open(TEMP_FILE, "w") as f:
        f.write(json.dumps(recipe_data, indent=4, default=str))

    recipe = Recipe(**recipe_data)

    return recipe.save_to_db()
Exemple #3
0
    def import_recipes(self):
        recipe_dir: Path = self.import_dir.joinpath("recipes")

        successful_imports = []
        failed_imports = []

        for recipe in recipe_dir.glob("*.json"):
            with open(recipe, "r") as f:
                recipe_dict = json.loads(f.read())
                recipe_dict = ImportDatabase._recipe_migration(recipe_dict)
            try:
                recipe_obj = Recipe(**recipe_dict)
                recipe_obj.save_to_db()
                successful_imports.append(recipe.stem)
                logger.info(f"Imported: {recipe.stem}")
            except:
                logger.info(f"Failed Import: {recipe.stem}")
                failed_imports.append(recipe.stem)

        self._import_images(successful_imports)

        return {"successful": successful_imports, "failed": failed_imports}
Exemple #4
0
def create_from_json(
    data: Recipe, db: Session = Depends(generate_session)) -> str:
    """ Takes in a JSON string and loads data into the database as a new entry"""
    new_recipe_slug = data.save_to_db(db)

    return new_recipe_slug
Exemple #5
0
def create_from_url(url: str) -> dict:
    recipe_data = process_recipe_url(url)
    recipe = Recipe(**recipe_data)

    return recipe.save_to_db()
Exemple #6
0
def create_from_json(data: Recipe) -> str:
    """ Takes in a JSON string and loads data into the database as a new entry"""
    created_recipe = data.save_to_db()

    return created_recipe