From 0e520ba43c9cd35fc3d1d7809540a395f90f9019 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Sat, 22 Jun 2024 22:26:54 -0500 Subject: [PATCH] feat: Add Additional Plan To Eat Columns To Import (#3776) --- mealie/services/migrations/plantoeat.py | 26 +++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/mealie/services/migrations/plantoeat.py b/mealie/services/migrations/plantoeat.py index 918e2545e0b8..7dc1efc76ee4 100644 --- a/mealie/services/migrations/plantoeat.py +++ b/mealie/services/migrations/plantoeat.py @@ -58,7 +58,6 @@ class PlanToEatMigrator(BaseMigrator): MigrationAlias(key="prepTime", alias="Prep Time"), MigrationAlias(key="performTime", alias="Cook Time"), MigrationAlias(key="totalTime", alias="Total Time"), - MigrationAlias(key="tags", alias="Tags", func=split_by_comma), MigrationAlias(key="dateAdded", alias="Created At", func=lambda x: x[: x.find(" ")]), ] @@ -77,11 +76,34 @@ class PlanToEatMigrator(BaseMigrator): return cleaner.clean_nutrition(nut_dict) + def _get_categories_from_row(self, row: dict) -> list[str]: + """Parses various category-like columns into categories""" + + categories: list[str] = [] + columns = ["Course", "Cuisine"] + for column in columns: + value = get_value_as_string_or_none(row, column) + if value: + categories.append(value) + + return categories + + def _get_tags_from_row(self, row: dict) -> list[str]: + tag_str = get_value_as_string_or_none(row, "Tags") + tags = split_by_comma(tag_str) or [] + main_ingredient = get_value_as_string_or_none(row, "Main Ingredient") + if main_ingredient: + tags.append(main_ingredient) + + return tags + def _process_recipe_row(self, row: dict) -> dict: - """Reads a single recipe's row, parses its nutrition, and converts it to a dictionary""" + """Reads a single recipe's row, merges columns, and converts the row to a dictionary""" recipe_dict: dict = row + recipe_dict["recipeCategory"] = self._get_categories_from_row(row) + recipe_dict["tags"] = self._get_tags_from_row(row) recipe_dict["nutrition"] = self._parse_recipe_nutrition_from_row(row) return recipe_dict