From 34822001882f76516959e8b215c60abf15c0fef6 Mon Sep 17 00:00:00 2001 From: Hayden Date: Fri, 15 Jan 2021 12:06:21 -0900 Subject: [PATCH] recipe updates --- mealie/data/db/mealie.sqlite | Bin 90112 -> 225280 bytes mealie/db/db_base.py | 1 - mealie/db/db_recipes.py | 14 ++++---- mealie/db/sql/recipe_models.py | 60 +++++++++++++++++++-------------- 4 files changed, 40 insertions(+), 35 deletions(-) diff --git a/mealie/data/db/mealie.sqlite b/mealie/data/db/mealie.sqlite index 9cc937f471ce62126ce00b293b1e5458de9a65e2..5a358d2abae3a89b02f996596e7864d3480e2a0a 100644 GIT binary patch literal 225280 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 None: if USE_MONGO: diff --git a/mealie/db/sql/recipe_models.py b/mealie/db/sql/recipe_models.py index f14959198..c46c5b4d4 100644 --- a/mealie/db/sql/recipe_models.py +++ b/mealie/db/sql/recipe_models.py @@ -87,26 +87,28 @@ class RecipeModel(SqlAlchemyBase): image = sa.Column(sa.String) recipeYield = sa.Column(sa.String) recipeIngredient: List[RecipeIngredient] = orm.relationship( - "RecipeIngredient", cascade="all, delete", order_by="RecipeIngredient.position" + "RecipeIngredient", cascade="all, delete" ) recipeInstructions: List[RecipeInstruction] = orm.relationship( "RecipeInstruction", cascade="all, delete", - order_by="RecipeInstruction.position", ) totalTime = sa.Column(sa.String) # Mealie Specific slug = sa.Column(sa.String, index=True, unique=True) categories: List[Category] = orm.relationship( - "Category", cascade="all, delete", order_by="Category.position" + "Category", + cascade="all, delete", ) tags: List[Tag] = orm.relationship( - "Tag", cascade="all, delete", order_by="Tag.position" + "Tag", + cascade="all, delete", ) dateAdded = sa.Column(sa.Date, default=date.today) notes: List[Note] = orm.relationship( - "Note", cascade="all, delete", order_by="Note.position" + "Note", + cascade="all, delete", ) rating = sa.Column(sa.Integer) orgURL = sa.Column(sa.String) @@ -170,6 +172,7 @@ class RecipeModel(SqlAlchemyBase): def update( self, + session, name: str = None, description: str = None, image: str = None, @@ -191,29 +194,34 @@ class RecipeModel(SqlAlchemyBase): self.image = image self.recipeYield = recipeYield - for ingr in recipeIngredient: - self.recipeIngredient - self.recipeIngredient = RecipeModel._update_list_str( - recipeIngredient, self.recipeIngredient, RecipeIngredient + # Deleted Recipe Ingredeints + self.recipeIngredient = [ + RecipeIngredient(ingredient=ingr) for ingr in recipeIngredient + ] + + list_of_tables = [RecipeIngredient, RecipeInstruction, Category, Tag, ApiExtras] + + for table in list_of_tables: + session.query(table).filter_by(parent_id=self.id).delete() + + self.__init__( + name=name, + description=description, + image=image, + recipeYield=recipeYield, + recipeIngredient=recipeIngredient, + recipeInstructions=recipeInstructions, + totalTime=totalTime, + slug=slug, + categories=categories, + tags=tags, + dateAdded=dateAdded, + notes=notes, + rating=rating, + orgURL=orgURL, + extras=extras, ) - # self.recipeInstructions = recipeInstructions - # self.totalTime = totalTime - # self.slug = slug - # self.categories = categories - - # for category in categories: - # if category in self.categories: - # pass - # else: - # self.categories.append(Category(name=category)) - - # self.tags = tags - # self.dateAdded = dateAdded - # self.notes = notes - # self.rating = rating - # self.orgURL = orgURL - # self.extras = extras @staticmethod def _flatten_dict(list_of_dict: List[dict]):