mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-27 02:03:13 -05:00
feat: Filter Recipes By Household (and a ton of bug fixes) (#4207)
Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
This commit is contained in:
@@ -10,6 +10,7 @@ from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import InstrumentedAttribute
|
||||
from typing_extensions import Self
|
||||
|
||||
from mealie.db.models.household.household import Household
|
||||
from mealie.db.models.recipe.category import Category
|
||||
from mealie.db.models.recipe.ingredient import RecipeIngredientModel
|
||||
from mealie.db.models.recipe.recipe import RecipeModel
|
||||
@@ -155,6 +156,7 @@ class RepositoryRecipes(HouseholdRepositoryGeneric[Recipe, RecipeModel]):
|
||||
tags: list[UUID4 | str] | None = None,
|
||||
tools: list[UUID4 | str] | None = None,
|
||||
foods: list[UUID4 | str] | None = None,
|
||||
households: list[UUID4 | str] | None = None,
|
||||
require_all_categories=True,
|
||||
require_all_tags=True,
|
||||
require_all_tools=True,
|
||||
@@ -170,6 +172,7 @@ class RepositoryRecipes(HouseholdRepositoryGeneric[Recipe, RecipeModel]):
|
||||
|
||||
if cookbook:
|
||||
cb_filters = self._build_recipe_filter(
|
||||
households=[cookbook.household_id],
|
||||
categories=extract_uuids(cookbook.categories),
|
||||
tags=extract_uuids(cookbook.tags),
|
||||
tools=extract_uuids(cookbook.tools),
|
||||
@@ -183,11 +186,13 @@ class RepositoryRecipes(HouseholdRepositoryGeneric[Recipe, RecipeModel]):
|
||||
category_ids = self._uuids_for_items(categories, Category)
|
||||
tag_ids = self._uuids_for_items(tags, Tag)
|
||||
tool_ids = self._uuids_for_items(tools, Tool)
|
||||
household_ids = self._uuids_for_items(households, Household)
|
||||
filters = self._build_recipe_filter(
|
||||
categories=category_ids,
|
||||
tags=tag_ids,
|
||||
tools=tool_ids,
|
||||
foods=foods,
|
||||
households=household_ids,
|
||||
require_all_categories=require_all_categories,
|
||||
require_all_tags=require_all_tags,
|
||||
require_all_tools=require_all_tools,
|
||||
@@ -245,6 +250,7 @@ class RepositoryRecipes(HouseholdRepositoryGeneric[Recipe, RecipeModel]):
|
||||
tags: list[UUID4] | None = None,
|
||||
tools: list[UUID4] | None = None,
|
||||
foods: list[UUID4] | None = None,
|
||||
households: list[UUID4] | None = None,
|
||||
require_all_categories: bool = True,
|
||||
require_all_tags: bool = True,
|
||||
require_all_tools: bool = True,
|
||||
@@ -278,6 +284,8 @@ class RepositoryRecipes(HouseholdRepositoryGeneric[Recipe, RecipeModel]):
|
||||
fltr.extend(RecipeModel.recipe_ingredient.any(RecipeIngredientModel.food_id == food) for food in foods)
|
||||
else:
|
||||
fltr.append(RecipeModel.recipe_ingredient.any(RecipeIngredientModel.food_id.in_(foods)))
|
||||
if households:
|
||||
fltr.append(RecipeModel.household_id.in_(households))
|
||||
return fltr
|
||||
|
||||
def by_category_and_tags(
|
||||
|
||||
Reference in New Issue
Block a user