diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 91ce5b097..627ce29e5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: exclude: ^tests/data/ - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.12.4 + rev: v0.12.5 hooks: - id: ruff - id: ruff-format diff --git a/frontend/components/Domain/Recipe/RecipeCardMobile.vue b/frontend/components/Domain/Recipe/RecipeCardMobile.vue index c6c0cdbec..e5d74569d 100644 --- a/frontend/components/Domain/Recipe/RecipeCardMobile.vue +++ b/frontend/components/Domain/Recipe/RecipeCardMobile.vue @@ -3,7 +3,10 @@ diff --git a/frontend/components/Domain/Recipe/RecipePage/RecipePage.vue b/frontend/components/Domain/Recipe/RecipePage/RecipePage.vue index 46eda6bbc..6a1f9a3d4 100644 --- a/frontend/components/Domain/Recipe/RecipePage/RecipePage.vue +++ b/frontend/components/Domain/Recipe/RecipePage/RecipePage.vue @@ -81,7 +81,7 @@ @@ -278,7 +278,7 @@ async function deleteRecipe() { * View Preferences */ const landscape = computed(() => { - const preferLandscape = recipe.value.settings.landscapeView; + const preferLandscape = recipe.value.settings?.landscapeView; const smallScreen = !$vuetify.display.smAndUp.value; if (preferLandscape) { diff --git a/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInstructions.vue b/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInstructions.vue index 65211b859..fba525a2b 100644 --- a/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInstructions.vue +++ b/frontend/components/Domain/Recipe/RecipePage/RecipePageParts/RecipePageInstructions.vue @@ -29,33 +29,31 @@ {{ activeText }}

- - + diff --git a/frontend/components/Domain/Recipe/RecipeTimeline.vue b/frontend/components/Domain/Recipe/RecipeTimeline.vue index 49ed1694d..56be7b42b 100644 --- a/frontend/components/Domain/Recipe/RecipeTimeline.vue +++ b/frontend/components/Domain/Recipe/RecipeTimeline.vue @@ -242,28 +242,28 @@ export default defineNuxtComponent({ alert.success(i18n.t("events.event-deleted") as string); }; - async function getRecipe(recipeId: string): Promise { - const { data } = await api.recipes.getOne(recipeId); - return data; + async function getRecipes(recipeIds: string[]): Promise { + const qf = "id IN [" + recipeIds.map(id => `"${id}"`).join(", ") + "]"; + const { data } = await api.recipes.getAll(1, -1, { queryFilter: qf }); + return data?.items || []; }; async function updateRecipes(events: RecipeTimelineEventOut[]) { - const recipePromises: Promise[] = []; - const seenRecipeIds: string[] = []; + const recipeIds: string[] = []; events.forEach((event) => { - if (seenRecipeIds.includes(event.recipeId) || recipes.has(event.recipeId)) { + if (recipeIds.includes(event.recipeId) || recipes.has(event.recipeId)) { return; } - seenRecipeIds.push(event.recipeId); - recipePromises.push(getRecipe(event.recipeId)); + recipeIds.push(event.recipeId); }); - const results = await Promise.all(recipePromises); + const results = await getRecipes(recipeIds); results.forEach((result) => { - if (result && result.id) { - recipes.set(result.id, result); + if (!result?.id) { + return; } + recipes.set(result.id, result); }); } diff --git a/frontend/components/Domain/Recipe/RecipeTimelineItem.vue b/frontend/components/Domain/Recipe/RecipeTimelineItem.vue index 1913ae36d..531d52241 100644 --- a/frontend/components/Domain/Recipe/RecipeTimelineItem.vue +++ b/frontend/components/Domain/Recipe/RecipeTimelineItem.vue @@ -53,6 +53,7 @@ - - - +
+ +
+ +
+
- + diff --git a/frontend/pages/group/data/tools.vue b/frontend/pages/group/data/tools.vue index 24a1e96c9..3da92758b 100644 --- a/frontend/pages/group/data/tools.vue +++ b/frontend/pages/group/data/tools.vue @@ -73,6 +73,7 @@ :title="$t('general.confirm')" :icon="$globals.icons.alertCircle" color="error" + can-confirm @confirm="deleteSelected" > diff --git a/mealie/repos/seed/resources/foods/locales/el-GR.json b/mealie/repos/seed/resources/foods/locales/el-GR.json index c8228b93d..57f4b36ca 100644 --- a/mealie/repos/seed/resources/foods/locales/el-GR.json +++ b/mealie/repos/seed/resources/foods/locales/el-GR.json @@ -16,8 +16,8 @@ "bell pepper": { "aliases": [], "description": "", - "name": "bell pepper", - "plural_name": "bell peppers" + "name": "στρογγυλή πιπεριά", + "plural_name": "στρογγυλές πιπεριές" }, "carrot": { "aliases": [], @@ -168,20 +168,20 @@ "arugula": { "aliases": [], "description": "", - "name": "arugula", - "plural_name": "arugulas" + "name": "ρόκα", + "plural_name": "ρόκα" }, "leek": { "aliases": [], "description": "", - "name": "leek", - "plural_name": "leeks" + "name": "πράσο", + "plural_name": "πράσα" }, "eggplant": { "aliases": [], "description": "", - "name": "eggplant", - "plural_name": "eggplants" + "name": "μελιτζάνα", + "plural_name": "μελιτζάνες" }, "lettuce": { "aliases": [], @@ -198,8 +198,8 @@ "romaine": { "aliases": [], "description": "", - "name": "romaine", - "plural_name": "romaines" + "name": "μαρούλι", + "plural_name": "μαρούλια" }, "beetroot": { "aliases": [], @@ -210,8 +210,8 @@ "brussels sprout": { "aliases": [], "description": "", - "name": "brussels sprout", - "plural_name": "brussels sprouts" + "name": "λαχανάκι Βρυξελλών", + "plural_name": "λαχανάκια Βρυξελλών" }, "fennel": { "aliases": [], @@ -222,8 +222,8 @@ "sun dried tomato": { "aliases": [], "description": "", - "name": "sun dried tomato", - "plural_name": "sun dried tomatoes" + "name": "αποξηραμένη ντομάτα", + "plural_name": "αποξηραμένες ντομάτες" }, "radish": { "aliases": [], @@ -628,93 +628,93 @@ "foods": { "tomato": { "aliases": [], - "description": "Yes they are a fruit", - "name": "tomato", - "plural_name": "tomatoes" + "description": "Σωστά, είναι φρούτο", + "name": "ντομάτα", + "plural_name": "ντομάτες" }, "lemon": { "aliases": [], "description": "", - "name": "lemon", - "plural_name": "lemons" + "name": "λεμόνι", + "plural_name": "λεμόνια" }, "lime": { "aliases": [], "description": "", - "name": "lime", - "plural_name": "limes" + "name": "λάιμ", + "plural_name": "λάιμ" }, "apple": { "aliases": [], "description": "", - "name": "apple", + "name": "μήλο", "plural_name": "μήλα" }, "banana": { "aliases": [], "description": "", - "name": "banana", - "plural_name": "bananas" + "name": "μπανάνα", + "plural_name": "μπανάνες" }, "orange": { "aliases": [], "description": "", - "name": "orange", - "plural_name": "oranges" + "name": "πορτοκάλι", + "plural_name": "πορτοκάλια" }, "raisin": { "aliases": [], "description": "", - "name": "raisin", - "plural_name": "raisins" + "name": "σταφίδα", + "plural_name": "σταφίδες" }, "pineapple": { "aliases": [], "description": "", - "name": "pineapple", - "plural_name": "pineapples" + "name": "ανανάς", + "plural_name": "ανανάδες" }, "mango": { "aliases": [], "description": "", - "name": "mango", - "plural_name": "mangoes" + "name": "μάνγκο", + "plural_name": "μάνγκο" }, "peach": { "aliases": [], "description": "", - "name": "peach", - "plural_name": "peaches" + "name": "ροδάκινο", + "plural_name": "ροδάκινα" }, "date": { "aliases": [], "description": "", - "name": "date", - "plural_name": "dates" + "name": "χουρμάς", + "plural_name": "χουρμάδες" }, "coconut": { "aliases": [], "description": "", - "name": "coconut", - "plural_name": "coconuts" + "name": "καρύδα", + "plural_name": "καρύδες" }, "craisin": { "aliases": [], "description": "", - "name": "craisin", - "plural_name": "craisins" + "name": "αποξηραμένο κράνμπερι", + "plural_name": "αποξηραμένα κράνμπερι" }, "pear": { "aliases": [], "description": "", - "name": "pear", - "plural_name": "pears" + "name": "αχλάδι", + "plural_name": "αχλάδια" }, "grape": { "aliases": [], "description": "", - "name": "grape", - "plural_name": "grapes" + "name": "σταφύλι", + "plural_name": "σταφύλια" }, "pomegranate": { "aliases": [], @@ -725,8 +725,8 @@ "watermelon": { "aliases": [], "description": "", - "name": "watermelon", - "plural_name": "watermelons" + "name": "καρπούζι", + "plural_name": "καρπούζια" }, "rhubarb": { "aliases": [], @@ -743,8 +743,8 @@ "kiwi": { "aliases": [], "description": "", - "name": "kiwi", - "plural_name": "kiwis" + "name": "ακτινίδιο", + "plural_name": "ακτινίδια" }, "grapefruit": { "aliases": [], @@ -821,8 +821,8 @@ "nectarine": { "aliases": [], "description": "", - "name": "nectarine", - "plural_name": "nectarines" + "name": "νεκταρίνι", + "plural_name": "νεκταρίνια" }, "dried fig": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/fr-FR.json b/mealie/repos/seed/resources/foods/locales/fr-FR.json index 86847bb01..d02ae496e 100644 --- a/mealie/repos/seed/resources/foods/locales/fr-FR.json +++ b/mealie/repos/seed/resources/foods/locales/fr-FR.json @@ -14515,8 +14515,8 @@ "rum": { "aliases": [], "description": "", - "name": "rum", - "plural_name": "rums" + "name": "rhum", + "plural_name": "rhums" }, "vodka": { "aliases": [], @@ -14581,8 +14581,8 @@ "white rum": { "aliases": [], "description": "", - "name": "white rum", - "plural_name": "white rums" + "name": "rhum blanc", + "plural_name": "rhums blancs" }, "coffee liqueur": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/he-IL.json b/mealie/repos/seed/resources/foods/locales/he-IL.json index 93b7ab1f0..685be8a40 100644 --- a/mealie/repos/seed/resources/foods/locales/he-IL.json +++ b/mealie/repos/seed/resources/foods/locales/he-IL.json @@ -4415,8 +4415,8 @@ "chicken tender": { "aliases": [], "description": "", - "name": "chicken tender", - "plural_name": "chicken tenders" + "name": "שניצלון עוף", + "plural_name": "שניצלוני עוף" }, "turkey sausage": { "aliases": [], @@ -4463,8 +4463,8 @@ "cornish hen": { "aliases": [], "description": "", - "name": "cornish hen", - "plural_name": "cornish hens" + "name": "עוף קורניש", + "plural_name": "עופות קורניש" }, "deli turkey": { "aliases": [], @@ -4565,8 +4565,8 @@ "foie gra": { "aliases": [], "description": "", - "name": "foie gra", - "plural_name": "foie gras" + "name": "כבד אווז", + "plural_name": "כבדי אווז" }, "chicken giblet": { "aliases": [], @@ -4607,8 +4607,8 @@ "chicken andouille": { "aliases": [], "description": "", - "name": "chicken andouille", - "plural_name": "chicken andouilles" + "name": "אנדוי עוף", + "plural_name": "אנדוי עוף" }, "chicken gizzard": { "aliases": [], @@ -4631,8 +4631,8 @@ "crispy chicken strip": { "aliases": [], "description": "", - "name": "crispy chicken strip", - "plural_name": "crispy chicken strips" + "name": "שניצלון עוף", + "plural_name": "שניצלוני עוף" }, "ostrich": { "aliases": [], @@ -4643,20 +4643,20 @@ "popcorn chicken": { "aliases": [], "description": "", - "name": "popcorn chicken", - "plural_name": "popcorn chickens" + "name": "עוף פופקורן", + "plural_name": "עוף פופקורן" }, "turkey kielbasa": { "aliases": [], "description": "", - "name": "turkey kielbasa", - "plural_name": "turkey kielbasas" + "name": "קילבסה הודו", + "plural_name": "קילבסה הודו" }, "chicken-apple sausage": { "aliases": [], "description": "", - "name": "chicken-apple sausage", - "plural_name": "chicken-apple sausages" + "name": "נקניקיית עוף-תפוח", + "plural_name": "נקניקיות עוף-תפוח" }, "chicken foot": { "aliases": [], @@ -4727,8 +4727,8 @@ "duck liver": { "aliases": [], "description": "", - "name": "duck liver", - "plural_name": "duck livers" + "name": "כבד אווז", + "plural_name": "כבדי אווז" }, "guinea fowl": { "aliases": [], @@ -4739,8 +4739,8 @@ "smoked turkey wing": { "aliases": [], "description": "", - "name": "smoked turkey wing", - "plural_name": "smoked turkey wings" + "name": "כנף הודו מעושנת", + "plural_name": "כנפי הודו מעושנות" }, "chicken curry-cut": { "aliases": [], @@ -4751,8 +4751,8 @@ "chicken schnitzel": { "aliases": [], "description": "", - "name": "chicken schnitzel", - "plural_name": "chicken schnitzels" + "name": "שניצל עוף", + "plural_name": "שניצלי עוף" }, "grouse": { "aliases": [], @@ -4805,8 +4805,8 @@ "chicken bacon": { "aliases": [], "description": "", - "name": "chicken bacon", - "plural_name": "chicken bacons" + "name": "בייקון עוף", + "plural_name": "בייקון עוף" }, "turkey rissole": { "aliases": [], @@ -4829,8 +4829,8 @@ "duck neck": { "aliases": [], "description": "", - "name": "duck neck", - "plural_name": "duck necks" + "name": "גרון ברווז", + "plural_name": "גרונות ברווז" }, "chicken chorizo": { "aliases": [], @@ -4877,8 +4877,8 @@ "turkey tail": { "aliases": [], "description": "", - "name": "turkey tail", - "plural_name": "turkey tails" + "name": "זנב הודו", + "plural_name": "זנבות הודו" }, "chicken milanesa": { "aliases": [], @@ -4905,14 +4905,14 @@ "cod": { "aliases": [], "description": "", - "name": "cod", - "plural_name": "cod" + "name": "קוד (בקלה)", + "plural_name": "קוד (בקלה)" }, "tilapia": { "aliases": [], "description": "", - "name": "tilapia", - "plural_name": "tilapias" + "name": "אמנון", + "plural_name": "אמנון" }, "tuna steak": { "aliases": [], @@ -4935,80 +4935,80 @@ "red snapper": { "aliases": [], "description": "", - "name": "red snapper", - "plural_name": "red snappers" + "name": "לוטיין אדום (רד סנפר)", + "plural_name": "לוטיינים אדומים (רד סנפר)" }, "sea bas": { "aliases": [], "description": "", - "name": "sea bas", - "plural_name": "sea bass" + "name": "בס ים", + "plural_name": "בס ים" }, "fish fillet": { "aliases": [], "description": "", - "name": "fish fillet", - "plural_name": "fish fillets" + "name": "פילה דגים", + "plural_name": "פילה דגים" }, "trout": { "aliases": [], "description": "", - "name": "trout", - "plural_name": "trout" + "name": "טרוטה (פורל)", + "plural_name": "טרוטה (פורל)" }, "catfish": { "aliases": [], "description": "", - "name": "catfish", - "plural_name": "catfishes" + "name": "שפמנון", + "plural_name": "שפמנונים" }, "surimi": { "aliases": [], "description": "", - "name": "surimi", - "plural_name": "surimis" + "name": "סורימי", + "plural_name": "סורימי" }, "swordfish": { "aliases": [], "description": "", - "name": "swordfish", - "plural_name": "swordfish" + "name": "דג חרב", + "plural_name": "דגי חרב" }, "sardine": { "aliases": [], "description": "", - "name": "sardine", - "plural_name": "sardines" + "name": "סרדין", + "plural_name": "סרדינים" }, "sole": { "aliases": [], "description": "", - "name": "sole", - "plural_name": "soles" + "name": "סול", + "plural_name": "סול" }, "mahi mahi": { "aliases": [], "description": "", - "name": "mahi mahi", - "plural_name": "mahi mahis" + "name": "רעמתן כחלחל", + "plural_name": "רעמתנים כחלחלים" }, "mackerel": { "aliases": [], "description": "", - "name": "mackerel", - "plural_name": "mackerel" + "name": "מקרל", + "plural_name": "מקרלים" }, "smoked trout": { "aliases": [], "description": "", - "name": "smoked trout", - "plural_name": "smoked trout" + "name": "טרוטה (פורל) מעושן", + "plural_name": "טרוטה (פורל) מעושנים" }, "caviar": { "aliases": [], "description": "", - "name": "caviar", - "plural_name": "caviars" + "name": "קוויאר", + "plural_name": "קוויאר" }, "haddock": { "aliases": [], @@ -5019,8 +5019,8 @@ "monkfish": { "aliases": [], "description": "", - "name": "monkfish", - "plural_name": "monkfish" + "name": "דג נזיר", + "plural_name": "דגי נזיר" }, "smoked haddock": { "aliases": [], @@ -5043,8 +5043,8 @@ "hake": { "aliases": [], "description": "", - "name": "hake", - "plural_name": "hakes" + "name": "מרלוזה", + "plural_name": "מרלוזות" }, "pollock": { "aliases": [], @@ -5055,8 +5055,8 @@ "salt cod": { "aliases": [], "description": "", - "name": "salt cod", - "plural_name": "salt cod" + "name": "קוד (בקלה) מלח", + "plural_name": "קוד (בקלה) מלח" }, "smoked mackerel": { "aliases": [], @@ -5127,8 +5127,8 @@ "black cod": { "aliases": [], "description": "", - "name": "black cod", - "plural_name": "black cod" + "name": "קוד (בקלה) שחור", + "plural_name": "קוד (בקלה) שחור" }, "kingfish": { "aliases": [], @@ -5205,8 +5205,8 @@ "yellowtail": { "aliases": [], "description": "", - "name": "yellowtail", - "plural_name": "yellowtails" + "name": "לוטיין צהוב-זנב", + "plural_name": "לוטיינים צהובי-זנב" }, "battered fish": { "aliases": [], @@ -5223,8 +5223,8 @@ "pickled herring": { "aliases": [], "description": "", - "name": "pickled herring", - "plural_name": "pickled herrings" + "name": "מליח (הרינג) כבוש", + "plural_name": "מליח (הרינג) כבושים" }, "john dory": { "aliases": [], @@ -5247,8 +5247,8 @@ "fresh mackerel": { "aliases": [], "description": "", - "name": "fresh mackerel", - "plural_name": "fresh mackerel" + "name": "מקרל טרי", + "plural_name": "מקרלים טריים" }, "salmon trout": { "aliases": [], @@ -5813,8 +5813,8 @@ "cinnamon": { "aliases": [], "description": "", - "name": "cinnamon", - "plural_name": "cinnamons" + "name": "קינמון", + "plural_name": "קינמון" }, "parsley": { "aliases": [], @@ -6335,8 +6335,8 @@ "saigon cinnamon": { "aliases": [], "description": "", - "name": "saigon cinnamon", - "plural_name": "saigon cinnamons" + "name": "קינמון צאלון", + "plural_name": "קינמון צאלון" }, "lemongrass paste": { "aliases": [], @@ -6550,8 +6550,8 @@ "cinnamon sugar": { "aliases": [], "description": "", - "name": "cinnamon sugar", - "plural_name": "cinnamon sugars" + "name": "סוכר קינמון", + "plural_name": "סוכרי קינמון" }, "liquid stevia": { "aliases": [], @@ -6760,8 +6760,8 @@ "apple syrup": { "aliases": [], "description": "", - "name": "apple syrup", - "plural_name": "apple syrups" + "name": "סירופ תפוחים", + "plural_name": "סירופי תפוחים" }, "allulose": { "aliases": [], @@ -6922,8 +6922,8 @@ "fructose": { "aliases": [], "description": "", - "name": "fructose", - "plural_name": "fructoses" + "name": "פרוקטוז (סוכר פירות)", + "plural_name": "פרוקטוז (סוכר פירות)" }, "honey powder": { "aliases": [], @@ -6940,8 +6940,8 @@ "grape syrup": { "aliases": [], "description": "", - "name": "grape syrup", - "plural_name": "grape syrups" + "name": "דבש ענבים", + "plural_name": "דבש ענבים" }, "brown butter syrup": { "aliases": [], @@ -6958,8 +6958,8 @@ "mastic gum": { "aliases": [], "description": "", - "name": "mastic gum", - "plural_name": "mastic gums" + "name": "מסטיקא", + "plural_name": "מסטיקא" }, "gum syrup": { "aliases": [], @@ -7000,8 +7000,8 @@ "chocolate sugar": { "aliases": [], "description": "", - "name": "chocolate sugar", - "plural_name": "chocolate sugars" + "name": "סוכר שוקולד", + "plural_name": "סוכרי שוקולד" }, "flavored syrup": { "aliases": [], @@ -7208,8 +7208,8 @@ "apple pie spice": { "aliases": [], "description": "", - "name": "apple pie spice", - "plural_name": "apple pie spices" + "name": "תבלין פאי תפוחים", + "plural_name": "תבליני פאי תפוחים" }, "za'atar": { "aliases": [], @@ -7914,8 +7914,8 @@ "jello": { "aliases": [], "description": "", - "name": "jello", - "plural_name": "jelloes" + "name": "ג׳לי", + "plural_name": "ג׳לי" }, "butterscotch chip": { "aliases": [], @@ -8052,8 +8052,8 @@ "cinnamon chip": { "aliases": [], "description": "", - "name": "cinnamon chip", - "plural_name": "cinnamon chips" + "name": "שבב קינמון", + "plural_name": "שבבי קינמון" }, "agar agar": { "aliases": [], @@ -8362,8 +8362,8 @@ "cinnamon roll dough": { "aliases": [], "description": "", - "name": "cinnamon roll dough", - "plural_name": "cinnamon roll doughs" + "name": "בצק לשבלול קינמון (סינבון)", + "plural_name": "בצקים לשבלולי קינמון (סינבונים)" }, "dosa batter": { "aliases": [], @@ -8540,8 +8540,8 @@ "rice": { "aliases": [], "description": "", - "name": "rice", - "plural_name": "rices" + "name": "אורז", + "plural_name": "אורז" }, "Rice Krispie Cereal": { "aliases": [ @@ -8710,8 +8710,8 @@ "red quinoa": { "aliases": [], "description": "", - "name": "red quinoa", - "plural_name": "red quinoas" + "name": "קינואה אדומה", + "plural_name": "קינואה אדומה" }, "raw buckwheat": { "aliases": [], @@ -8770,8 +8770,8 @@ "amaranth": { "aliases": [], "description": "", - "name": "amaranth", - "plural_name": "amaranths" + "name": "ירבוז (אמרנט)", + "plural_name": "ירבוז (אמרנט)" }, "kasha": { "aliases": [], @@ -8788,8 +8788,8 @@ "puffed rice": { "aliases": [], "description": "", - "name": "puffed rice", - "plural_name": "puffed rices" + "name": "פצפוצי אורז", + "plural_name": "פצפוצי אורז" }, "pearled farro": { "aliases": [], @@ -8890,8 +8890,8 @@ "puffed quinoa": { "aliases": [], "description": "", - "name": "puffed quinoa", - "plural_name": "puffed quinoas" + "name": "פצפוצי קינואה", + "plural_name": "פצפוצי קינואה" }, "cilantro lime rice": { "aliases": [], @@ -8908,8 +8908,8 @@ "puffed wheat": { "aliases": [], "description": "", - "name": "puffed wheat", - "plural_name": "puffed wheats" + "name": "פצפוצי חיטה (שלווה)", + "plural_name": "פצפוצי חיטה (שלווה)" }, "hulled barley": { "aliases": [], @@ -8992,8 +8992,8 @@ "puffed amaranth": { "aliases": [], "description": "", - "name": "puffed amaranth", - "plural_name": "puffed amaranths" + "name": "פצפוצי ירבוז (אמרנט)", + "plural_name": "פצפוצי ירבוז (אמרנט)" }, "coconut rice": { "aliases": [], @@ -9004,14 +9004,14 @@ "amaranth flake": { "aliases": [], "description": "", - "name": "amaranth flake", - "plural_name": "amaranth flakes" + "name": "פתיתי ירבוז (אמרנט)", + "plural_name": "פתיתי ירבוז (אמרנט)" }, "puffed kamut": { "aliases": [], "description": "", - "name": "puffed kamut", - "plural_name": "puffed kamuts" + "name": "פצפוצי חיטת קמוט", + "plural_name": "פצפוצי חיטת קמוט" }, "bamboo rice": { "aliases": [], @@ -9980,8 +9980,8 @@ "quinoa pasta": { "aliases": [], "description": "", - "name": "quinoa pasta", - "plural_name": "quinoa pastas" + "name": "פסטת קינואה", + "plural_name": "פסטות קינואה" }, "bean pasta": { "aliases": [], @@ -10510,8 +10510,8 @@ "chocolate muffin": { "aliases": [], "description": "", - "name": "chocolate muffin", - "plural_name": "chocolate muffins" + "name": "מאפין שוקולד", + "plural_name": "מאפינס שוקולד" }, "milk bread": { "aliases": [], @@ -12160,8 +12160,8 @@ "canned pineapple": { "aliases": [], "description": "", - "name": "canned pineapple", - "plural_name": "canned pineapples" + "name": "אננס משומר", + "plural_name": "אננסים משומרים" }, "chipotle in adobo": { "aliases": [], @@ -12358,8 +12358,8 @@ "canned apple": { "aliases": [], "description": "", - "name": "canned apple", - "plural_name": "canned apples" + "name": "תפוח עץ משומר", + "plural_name": "תפוחי עץ משומרים" }, "canned green bean": { "aliases": [], @@ -12394,8 +12394,8 @@ "fruit cocktail": { "aliases": [], "description": "", - "name": "fruit cocktail", - "plural_name": "fruit cocktails" + "name": "קוקטייל פירות", + "plural_name": "קוקטיילי פירות" }, "canned lentil": { "aliases": [], @@ -12892,8 +12892,8 @@ "cocktail sauce": { "aliases": [], "description": "", - "name": "cocktail sauce", - "plural_name": "cocktail sauces" + "name": "רוטב קוקטייל", + "plural_name": "רטבי קוקטייל" }, "cheese dip": { "aliases": [], @@ -13670,8 +13670,8 @@ "chicken soup mix": { "aliases": [], "description": "", - "name": "chicken soup mix", - "plural_name": "chicken soup mixes" + "name": "תערובת מרק עןף", + "plural_name": "תערובות מרק עוף" }, "cream of bacon": { "aliases": [], @@ -13802,8 +13802,8 @@ "oxtail soup": { "aliases": [], "description": "", - "name": "oxtail soup", - "plural_name": "oxtail soups" + "name": "מרק זנבות שור", + "plural_name": "מרקי זנבות שור" }, "potato soup mix": { "aliases": [], @@ -15251,8 +15251,8 @@ "drinking chocolate": { "aliases": [], "description": "", - "name": "drinking chocolate", - "plural_name": "drinking chocolates" + "name": "שוקו", + "plural_name": "שוקו" }, "tonic water": { "aliases": [], @@ -15401,8 +15401,8 @@ "energy drink": { "aliases": [], "description": "", - "name": "energy drink", - "plural_name": "energy drinks" + "name": "משקה אנרגייה", + "plural_name": "משקאות אנרגייה" }, "chamomile tea": { "aliases": [], @@ -15665,8 +15665,8 @@ "sports drink": { "aliases": [], "description": "", - "name": "sports drink", - "plural_name": "sports drinks" + "name": "משקה ספורט", + "plural_name": "משקאות ספורט" }, "acai berry juice": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/nl-NL.json b/mealie/repos/seed/resources/foods/locales/nl-NL.json index ad7071330..767308182 100644 --- a/mealie/repos/seed/resources/foods/locales/nl-NL.json +++ b/mealie/repos/seed/resources/foods/locales/nl-NL.json @@ -2453,20 +2453,20 @@ "hard goat cheese": { "aliases": [], "description": "", - "name": "hard goat cheese", - "plural_name": "hard goat cheeses" + "name": "harde geiten kaas", + "plural_name": "harde geiten kazen" }, "kashkaval": { "aliases": [], "description": "", "name": "kashkaval", - "plural_name": "kashkavals" + "plural_name": "schapen kaas" }, "sheep cheese": { "aliases": [], "description": "", - "name": "sheep cheese", - "plural_name": "sheep cheeses" + "name": "schapen kaas", + "plural_name": "schapen kazen" }, "amul cheese": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/sv-SE.json b/mealie/repos/seed/resources/foods/locales/sv-SE.json index 5c2ddfd65..f7f8e92c1 100644 --- a/mealie/repos/seed/resources/foods/locales/sv-SE.json +++ b/mealie/repos/seed/resources/foods/locales/sv-SE.json @@ -8540,8 +8540,8 @@ "rice": { "aliases": [], "description": "", - "name": "rice", - "plural_name": "rices" + "name": "ris", + "plural_name": "ris" }, "Rice Krispie Cereal": { "aliases": [ @@ -8555,13 +8555,13 @@ "aliases": [], "description": "", "name": "quinoa", - "plural_name": "quinoas" + "plural_name": "quinoa" }, "basmati rice": { "aliases": [], "description": "", - "name": "basmati rice", - "plural_name": "basmati rices" + "name": "basmatiris", + "plural_name": "basmatiris" }, "brown rice": { "aliases": [], @@ -8578,26 +8578,26 @@ "breakfast cereal": { "aliases": [], "description": "", - "name": "breakfast cereal", - "plural_name": "breakfast cereals" + "name": "frukostflinga", + "plural_name": "frukostflingor" }, "risotto rice": { "aliases": [], "description": "", - "name": "risotto rice", - "plural_name": "risotto rices" + "name": "risottoris", + "plural_name": "risottoris" }, "couscou": { "aliases": [], "description": "", - "name": "couscou", + "name": "couscous", "plural_name": "couscous" }, "rice cereal": { "aliases": [], "description": "", - "name": "rice cereal", - "plural_name": "rice cereals" + "name": "risflinga", + "plural_name": "risflingor" }, "wild rice": { "aliases": [], @@ -8614,14 +8614,14 @@ "jasmine rice": { "aliases": [], "description": "", - "name": "jasmine rice", - "plural_name": "jasmine rices" + "name": "jasminris", + "plural_name": "jasminris" }, "polenta": { "aliases": [], "description": "", "name": "polenta", - "plural_name": "polentas" + "plural_name": "polenta" }, "granola cereal": { "aliases": [], @@ -8633,7 +8633,7 @@ "aliases": [], "description": "", "name": "bulgur", - "plural_name": "bulgurs" + "plural_name": "bulgur" }, "pearl barley": { "aliases": [], @@ -8686,8 +8686,8 @@ "sushi rice": { "aliases": [], "description": "", - "name": "sushi rice", - "plural_name": "sushi rices" + "name": "sushiris", + "plural_name": "sushiris" }, "glutinous rice": { "aliases": [], @@ -8764,8 +8764,8 @@ "muesli": { "aliases": [], "description": "", - "name": "muesli", - "plural_name": "mueslis" + "name": "müsli", + "plural_name": "müsli" }, "amaranth": { "aliases": [], @@ -8812,8 +8812,8 @@ "paella rice": { "aliases": [], "description": "", - "name": "paella rice", - "plural_name": "paella rices" + "name": "paellaris", + "plural_name": "paellaris" }, "sorghum": { "aliases": [], @@ -8986,8 +8986,8 @@ "gluten-free breakfast cereal": { "aliases": [], "description": "", - "name": "gluten-free breakfast cereal", - "plural_name": "gluten-free breakfast cereals" + "name": "glutenfri frukostflinga", + "plural_name": "glutenfria frukostflingor" }, "puffed amaranth": { "aliases": [], @@ -9092,8 +9092,8 @@ "pea": { "aliases": [], "description": "", - "name": "pea", - "plural_name": "peas" + "name": "ärta", + "plural_name": "ärtor" }, "green bean": { "aliases": [], @@ -9104,8 +9104,8 @@ "chickpea": { "aliases": [], "description": "", - "name": "chickpea", - "plural_name": "chickpeas" + "name": "kikärta", + "plural_name": "kikärtor" }, "black bean": { "aliases": [], @@ -9116,20 +9116,20 @@ "kidney bean": { "aliases": [], "description": "", - "name": "kidney bean", - "plural_name": "kidney beans" + "name": "kidneyböna", + "plural_name": "kidneybönor" }, "white bean": { "aliases": [], "description": "", - "name": "white bean", - "plural_name": "white beans" + "name": "vit böna", + "plural_name": "vita bönor" }, "lentil": { "aliases": [], "description": "", - "name": "lentil", - "plural_name": "lentils" + "name": "lins", + "plural_name": "linser" }, "pinto bean": { "aliases": [], @@ -9152,8 +9152,8 @@ "red lentil": { "aliases": [], "description": "", - "name": "red lentil", - "plural_name": "red lentils" + "name": "röd lins", + "plural_name": "röda linser" }, "cannellini bean": { "aliases": [], @@ -9170,14 +9170,14 @@ "edamame": { "aliases": [], "description": "", - "name": "edamame", - "plural_name": "edamames" + "name": "edamameböna", + "plural_name": "edamamebönor" }, "green lentil": { "aliases": [], "description": "", - "name": "green lentil", - "plural_name": "green lentils" + "name": "grön lins", + "plural_name": "gröna linser" }, "urad dal": { "aliases": [], @@ -9188,8 +9188,8 @@ "lima bean": { "aliases": [], "description": "", - "name": "lima bean", - "plural_name": "lima beans" + "name": "limaböna", + "plural_name": "limabönor" }, "chana dal": { "aliases": [], @@ -9296,8 +9296,8 @@ "yellow lentil": { "aliases": [], "description": "", - "name": "yellow lentil", - "plural_name": "yellow lentils" + "name": "gul lins", + "plural_name": "gula linser" }, "mixed bean": { "aliases": [], @@ -9428,8 +9428,8 @@ "golden wax bean": { "aliases": [], "description": "", - "name": "golden wax bean", - "plural_name": "golden wax beans" + "name": "gul vaxböna", + "plural_name": "gula vaxbönor" }, "moth bean": { "aliases": [], @@ -9782,8 +9782,8 @@ "instant noodle": { "aliases": [], "description": "", - "name": "instant noodle", - "plural_name": "instant noodles" + "name": "snabbnudel", + "plural_name": "snabbnudlar" }, "somen noodle": { "aliases": [], @@ -10042,8 +10042,8 @@ "panko": { "aliases": [], "description": "", - "name": "panko", - "plural_name": "pankoes" + "name": "pankosmula", + "plural_name": "pankosmulor" }, "flour tortilla": { "aliases": [], @@ -10114,14 +10114,14 @@ "crouton": { "aliases": [], "description": "", - "name": "crouton", - "plural_name": "croutons" + "name": "krutong", + "plural_name": "krutonger" }, "whole-wheat tortilla": { "aliases": [], "description": "", - "name": "whole-wheat tortilla", - "plural_name": "whole-wheat tortillas" + "name": "fullkornstortilla", + "plural_name": "fullkornstortilla" }, "english muffin": { "aliases": [], @@ -10144,8 +10144,8 @@ "rye bread": { "aliases": [], "description": "", - "name": "rye bread", - "plural_name": "rye breads" + "name": "rågbröd", + "plural_name": "rågbröd" }, "flatbread": { "aliases": [], @@ -10156,14 +10156,14 @@ "dry-roasted peanut": { "aliases": [], "description": "", - "name": "dry-roasted peanut", - "plural_name": "dry-roasted peanuts" + "name": "torrostad jordnöt", + "plural_name": "torrostade jordnötter" }, "potato chip": { "aliases": [], "description": "", - "name": "potato chip", - "plural_name": "potato chips" + "name": "potatischips", + "plural_name": "potatischips" }, "naan": { "aliases": [], @@ -10282,8 +10282,8 @@ "gluten-free bread crumb": { "aliases": [], "description": "", - "name": "gluten-free bread crumb", - "plural_name": "gluten-free bread crumbs" + "name": "glutenfri brödsmula", + "plural_name": "glutenfria brödsmulor" }, "tostada shell": { "aliases": [], @@ -10336,8 +10336,8 @@ "rice cake": { "aliases": [], "description": "", - "name": "rice cake", - "plural_name": "rice cakes" + "name": "riskaka", + "plural_name": "riskakor" }, "panettone": { "aliases": [], @@ -10348,8 +10348,8 @@ "sweet potato fry": { "aliases": [], "description": "", - "name": "sweet potato fry", - "plural_name": "sweet potato fries" + "name": "sötpotatispommes", + "plural_name": "sötpotatispommes" }, "sev": { "aliases": [], @@ -10658,8 +10658,8 @@ "coconut oil": { "aliases": [], "description": "", - "name": "coconut oil", - "plural_name": "coconut oils" + "name": "kokosnötsolja", + "plural_name": "kokosnötsoljor" }, "cooking spray": { "aliases": [], @@ -10670,20 +10670,20 @@ "sesame oil": { "aliases": [], "description": "", - "name": "sesame oil", - "plural_name": "sesame oils" + "name": "sesamolja", + "plural_name": "sesamoljor" }, "frying oil": { "aliases": [], "description": "", - "name": "frying oil", - "plural_name": "frying oils" + "name": "frityrolja", + "plural_name": "frityroljor" }, "sunflower oil": { "aliases": [], "description": "", - "name": "sunflower oil", - "plural_name": "sunflower oils" + "name": "solrosolja", + "plural_name": "solrosoljor" }, "avocado oil": { "aliases": [], @@ -10700,8 +10700,8 @@ "peanut oil": { "aliases": [], "description": "", - "name": "peanut oil", - "plural_name": "peanut oils" + "name": "jordnötsolja", + "plural_name": "jordnötsoljor" }, "grapeseed oil": { "aliases": [ @@ -10756,8 +10756,8 @@ "truffle oil": { "aliases": [], "description": "", - "name": "truffle oil", - "plural_name": "truffle oils" + "name": "tryffelolja", + "plural_name": "tryffeloljor" }, "bacon grease": { "aliases": [], @@ -10786,8 +10786,8 @@ "duck fat": { "aliases": [], "description": "", - "name": "duck fat", - "plural_name": "duck fats" + "name": "ankfett", + "plural_name": "ankfett" }, "rice bran oil": { "aliases": [], @@ -10822,8 +10822,8 @@ "white truffle oil": { "aliases": [], "description": "", - "name": "white truffle oil", - "plural_name": "white truffle oils" + "name": "vit tryffelolja", + "plural_name": "vit tryffeloljor" }, "pumpkin seed oil": { "aliases": [], @@ -10870,14 +10870,14 @@ "palm oil": { "aliases": [], "description": "", - "name": "palm oil", - "plural_name": "palm oils" + "name": "palmolja", + "plural_name": "palmoljor" }, "basil oil": { "aliases": [], "description": "", - "name": "basil oil", - "plural_name": "basil oils" + "name": "basilikaolja", + "plural_name": "basilikaoljor" }, "pork fat": { "aliases": [], @@ -11078,44 +11078,44 @@ "mayonnaise": { "aliases": [], "description": "", - "name": "mayonnaise", - "plural_name": "mayonnaises" + "name": "majonnäs", + "plural_name": "majonnäser" }, "apple cider vinegar": { "aliases": [], "description": "", - "name": "apple cider vinegar", - "plural_name": "apple cider vinegars" + "name": "äppelcidervinäger", + "plural_name": "äppelcidervinäger" }, "balsamic vinegar": { "aliases": [], "description": "", - "name": "balsamic vinegar", - "plural_name": "balsamic vinegars" + "name": "balsamvinäger", + "plural_name": "balsamvinäger" }, "vinegar": { "aliases": [], "description": "", - "name": "vinegar", - "plural_name": "vinegars" + "name": "vinäger", + "plural_name": "vinäger" }, "red wine vinegar": { "aliases": [], "description": "", - "name": "red wine vinegar", - "plural_name": "red wine vinegars" + "name": "rödvinsvinäger", + "plural_name": "rödvinsvinäger" }, "rice wine vinegar": { "aliases": [], "description": "", - "name": "rice wine vinegar", - "plural_name": "rice wine vinegars" + "name": "risvinsvinäger", + "plural_name": "risvinsvinäger" }, "white wine vinegar": { "aliases": [], "description": "", - "name": "white wine vinegar", - "plural_name": "white wine vinegars" + "name": "vitvinsvinäger", + "plural_name": "vitvinsvinäger" }, "ranch dressing": { "aliases": [], @@ -11150,8 +11150,8 @@ "white balsamic vinegar": { "aliases": [], "description": "", - "name": "white balsamic vinegar", - "plural_name": "white balsamic vinegars" + "name": "vit balsamvinäger", + "plural_name": "vit balsamvinäger" }, "champagne vinegar": { "aliases": [], @@ -11210,8 +11210,8 @@ "raspberry vinegar": { "aliases": [], "description": "", - "name": "raspberry vinegar", - "plural_name": "raspberry vinegars" + "name": "hallonvinäger", + "plural_name": "hallonvinäger" }, "japanese mayonnaise": { "aliases": [], @@ -11222,8 +11222,8 @@ "tarragon vinegar": { "aliases": [], "description": "", - "name": "tarragon vinegar", - "plural_name": "tarragon vinegars" + "name": "dragonvinäger", + "plural_name": "dragonvinäger" }, "greek vinaigrette": { "aliases": [], @@ -11246,8 +11246,8 @@ "aioli sauce": { "aliases": [], "description": "", - "name": "aioli sauce", - "plural_name": "aioli sauces" + "name": "aioli", + "plural_name": "aioli" }, "french dressing": { "aliases": [], @@ -11420,8 +11420,8 @@ "honey vinegar": { "aliases": [], "description": "", - "name": "honey vinegar", - "plural_name": "honey vinegars" + "name": "honungsvinäger", + "plural_name": "honungsvinäger" }, "tandoori mayonnaise": { "aliases": [], @@ -11432,8 +11432,8 @@ "chili vinegar": { "aliases": [], "description": "", - "name": "chili vinegar", - "plural_name": "chili vinegars" + "name": "chillivinäger", + "plural_name": "chillivinäger" }, "chili-lime dressing": { "aliases": [], @@ -11490,14 +11490,14 @@ "soy sauce": { "aliases": [], "description": "", - "name": "soy sauce", - "plural_name": "soy sauces" + "name": "soja", + "plural_name": "soja" }, "dijon mustard": { "aliases": [], "description": "", - "name": "dijon mustard", - "plural_name": "dijon mustards" + "name": "dijonsenap", + "plural_name": "dijonsenap" }, "worcestershire": { "aliases": [], @@ -11521,13 +11521,13 @@ "aliases": [], "description": "", "name": "ketchup", - "plural_name": "ketchups" + "plural_name": "ketchup" }, "mustard": { "aliases": [], "description": "", - "name": "mustard", - "plural_name": "mustards" + "name": "senap", + "plural_name": "senap" }, "fish sauce": { "aliases": [], @@ -11550,8 +11550,8 @@ "wholegrain mustard": { "aliases": [], "description": "", - "name": "wholegrain mustard", - "plural_name": "wholegrain mustards" + "name": "grov senap", + "plural_name": "grov senap" }, "tamari": { "aliases": [], @@ -11610,8 +11610,8 @@ "dark soy sauce": { "aliases": [], "description": "", - "name": "dark soy sauce", - "plural_name": "dark soy sauces" + "name": "mörk soja", + "plural_name": "mörk soja" }, "coconut amino": { "aliases": [], @@ -11665,19 +11665,19 @@ "aliases": [], "description": "", "name": "wasabi", - "plural_name": "wasabis" + "plural_name": "wasabi" }, "honey mustard": { "aliases": [], "description": "", - "name": "honey mustard", - "plural_name": "honey mustards" + "name": "honungssenap", + "plural_name": "honungssenap" }, "mango chutney": { "aliases": [], "description": "", "name": "mango chutney", - "plural_name": "mango chutneys" + "plural_name": "mango chutney" }, "english mustard": { "aliases": [], @@ -11689,7 +11689,7 @@ "aliases": [], "description": "", "name": "sambal oelek", - "plural_name": "sambal oeleks" + "plural_name": "sambal oelek" }, "preserved lemon": { "aliases": [], @@ -11712,8 +11712,8 @@ "shrimp paste": { "aliases": [], "description": "", - "name": "shrimp paste", - "plural_name": "shrimp pastes" + "name": "räkpasta", + "plural_name": "räkpasta" }, "picante sauce": { "aliases": [], @@ -11880,8 +11880,8 @@ "hp sauce": { "aliases": [], "description": "", - "name": "hp sauce", - "plural_name": "hp sauces" + "name": "HP-sås", + "plural_name": "HP-såser" }, "duck sauce": { "aliases": [], @@ -12012,8 +12012,8 @@ "remoulade": { "aliases": [], "description": "", - "name": "remoulade", - "plural_name": "remoulades" + "name": "remoulad", + "plural_name": "remoulad" }, "white bbq sauce": { "aliases": [], @@ -12106,26 +12106,26 @@ "caper": { "aliases": [], "description": "", - "name": "caper", - "plural_name": "capers" + "name": "kapris", + "plural_name": "kapris" }, "green olive": { "aliases": [], "description": "", - "name": "green olive", - "plural_name": "green olives" + "name": "grön oliv", + "plural_name": "gröna oliver" }, "canned chickpea": { "aliases": [], "description": "", - "name": "canned chickpea", - "plural_name": "canned chickpeas" + "name": "konserverad kikärta", + "plural_name": "konserverade kikärtor" }, "black olive": { "aliases": [], "description": "", - "name": "black olive", - "plural_name": "black olives" + "name": "svart oliv", + "plural_name": "svarta oliver" }, "canned black bean": { "aliases": [], @@ -12142,14 +12142,14 @@ "kalamata olive": { "aliases": [], "description": "", - "name": "kalamata olive", - "plural_name": "kalamata olives" + "name": "kalamataoliv", + "plural_name": "kalamataoliver" }, "canned tuna": { "aliases": [], "description": "", - "name": "canned tuna", - "plural_name": "canned tuna" + "name": "konserverad tonfisk", + "plural_name": "konserverade tonfiskar" }, "pickle": { "aliases": [], @@ -12160,8 +12160,8 @@ "canned pineapple": { "aliases": [], "description": "", - "name": "canned pineapple", - "plural_name": "canned pineapples" + "name": "konserverad ananas", + "plural_name": "konserverade ananaser" }, "chipotle in adobo": { "aliases": [], @@ -12226,8 +12226,8 @@ "canned whole tomato": { "aliases": [], "description": "", - "name": "canned whole tomato", - "plural_name": "canned whole tomatoes" + "name": "konserverad hel tomat", + "plural_name": "konserverade hela tomater" }, "sweet pickle relish": { "aliases": [], @@ -12238,8 +12238,8 @@ "sauerkraut": { "aliases": [], "description": "", - "name": "sauerkraut", - "plural_name": "sauerkrauts" + "name": "surkål", + "plural_name": "surkål" }, "creamed corn": { "aliases": [], @@ -12274,14 +12274,14 @@ "sun-dried tomato in oil": { "aliases": [], "description": "", - "name": "sun-dried tomato in oil", - "plural_name": "sun-dried tomatoes in oil" + "name": "soltorkad tomat i olja", + "plural_name": "soltorkade tomater i olja" }, "kimchi": { "aliases": [], "description": "", "name": "kimchi", - "plural_name": "kimchis" + "plural_name": "kimchi" }, "canned mandarin orange": { "aliases": [], @@ -12304,14 +12304,14 @@ "bamboo shoot": { "aliases": [], "description": "", - "name": "bamboo shoot", - "plural_name": "bamboo shoots" + "name": "bambuskott", + "plural_name": "bambuskott" }, "canned mushroom": { "aliases": [], "description": "", - "name": "canned mushroom", - "plural_name": "canned mushrooms" + "name": "konserverad champinjon", + "plural_name": "konserverade champinjoner" }, "baked bean": { "aliases": [], @@ -12400,20 +12400,20 @@ "canned lentil": { "aliases": [], "description": "", - "name": "canned lentil", - "plural_name": "canned lentils" + "name": "konserverad lins", + "plural_name": "konserverade linser" }, "canned pea": { "aliases": [], "description": "", - "name": "canned pea", - "plural_name": "canned peas" + "name": "konserverad ärta", + "plural_name": "konserverade ärtor" }, "pickled red onion": { "aliases": [], "description": "", - "name": "pickled red onion", - "plural_name": "pickled red onions" + "name": "picklad rödlök", + "plural_name": "picklade rödlökar" }, "pimiento-stuffed green olive": { "aliases": [], @@ -12436,8 +12436,8 @@ "canned cherry tomato": { "aliases": [], "description": "", - "name": "canned cherry tomato", - "plural_name": "canned cherry tomatoes" + "name": "konserverad körsbärstomat", + "plural_name": "konserverade körsbärstomater" }, "bread & butter pickle": { "aliases": [], @@ -12460,8 +12460,8 @@ "canned pear": { "aliases": [], "description": "", - "name": "canned pear", - "plural_name": "canned pears" + "name": "konserverat päron", + "plural_name": "konserverade päron" }, "peppadew pepper": { "aliases": [], @@ -12484,8 +12484,8 @@ "canned baby corn": { "aliases": [], "description": "", - "name": "canned baby corn", - "plural_name": "canned baby corns" + "name": "konserverad minimajs", + "plural_name": "konserverade minimajs" }, "mexican-style corn": { "aliases": [], @@ -12520,8 +12520,8 @@ "canned carrot": { "aliases": [], "description": "", - "name": "canned carrot", - "plural_name": "canned carrots" + "name": "konserverad morot", + "plural_name": "konserverade morötter" }, "banana pepper ring": { "aliases": [], @@ -12586,8 +12586,8 @@ "canned asparagu": { "aliases": [], "description": "", - "name": "canned asparagu", - "plural_name": "canned asparagus" + "name": "konserverad sparris", + "plural_name": "konserverade sparris" }, "fire-roasted green chile": { "aliases": [], @@ -12622,8 +12622,8 @@ "canned mackerel": { "aliases": [], "description": "", - "name": "canned mackerel", - "plural_name": "canned mackerel" + "name": "konserverad makrill", + "plural_name": "konserverade makrillar" }, "pickled cherry pepper": { "aliases": [], @@ -12652,8 +12652,8 @@ "canned potato": { "aliases": [], "description": "", - "name": "canned potato", - "plural_name": "canned potatoes" + "name": "konserverad potatis", + "plural_name": "konserverade potatisar" }, "okra pickle": { "aliases": [], @@ -12704,14 +12704,14 @@ "peanut butter": { "aliases": [], "description": "", - "name": "peanut butter", - "plural_name": "peanut butters" + "name": "jordnötssmör", + "plural_name": "jordnötssmör" }, "tomato paste": { "aliases": [], "description": "", - "name": "tomato paste", - "plural_name": "tomato pastes" + "name": "tomatpuré", + "plural_name": "tomatpuréer" }, "tomato sauce": { "aliases": [], @@ -12735,7 +12735,7 @@ "aliases": [], "description": "", "name": "pesto", - "plural_name": "pestoes" + "plural_name": "pesto" }, "marinara sauce": { "aliases": [ @@ -12773,12 +12773,12 @@ "aliases": [], "description": "", "name": "guacamole", - "plural_name": "guacamoles" + "plural_name": "guacamole" }, "hummu": { "aliases": [], "description": "", - "name": "hummu", + "name": "hummus", "plural_name": "hummus" }, "enchilada sauce": { @@ -12844,8 +12844,8 @@ "taco sauce": { "aliases": [], "description": "", - "name": "taco sauce", - "plural_name": "taco sauces" + "name": "tacosås", + "plural_name": "tacosåser" }, "beef gravy": { "aliases": [], @@ -12856,8 +12856,8 @@ "sun-dried tomato pesto": { "aliases": [], "description": "", - "name": "sun-dried tomato pesto", - "plural_name": "sun-dried tomato pestoes" + "name": "pesto på soltorkad tomat", + "plural_name": "pesto på soltorkad tomat" }, "béchamel sauce": { "aliases": [], @@ -12880,8 +12880,8 @@ "garlic butter": { "aliases": [], "description": "", - "name": "garlic butter", - "plural_name": "garlic butter" + "name": "vitlökssmör", + "plural_name": "vitlökssmör" }, "hollandaise sauce": { "aliases": [], diff --git a/mealie/routes/households/controller_webhooks.py b/mealie/routes/households/controller_webhooks.py index 251bb3617..f76e33de9 100644 --- a/mealie/routes/households/controller_webhooks.py +++ b/mealie/routes/households/controller_webhooks.py @@ -10,7 +10,7 @@ from mealie.routes._base.mixins import HttpRepo from mealie.schema import mapper from mealie.schema.household.webhook import CreateWebhook, ReadWebhook, SaveWebhook, WebhookPagination from mealie.schema.response.pagination import PaginationQuery -from mealie.services.scheduler.tasks.post_webhooks import post_group_webhooks, post_single_webhook +from mealie.services.scheduler.tasks.post_webhooks import post_group_webhooks, post_test_webhook router = APIRouter(prefix="/households/webhooks", tags=["Households: Webhooks"]) @@ -55,7 +55,7 @@ class ReadWebhookController(BaseUserController): @router.post("/{item_id}/test") def test_one(self, item_id: UUID4, bg_tasks: BackgroundTasks): webhook = self.mixins.get_one(item_id) - bg_tasks.add_task(post_single_webhook, webhook, "Test Webhook") + bg_tasks.add_task(post_test_webhook, webhook, "Test Webhook") @router.put("/{item_id}", response_model=ReadWebhook) def update_one(self, item_id: UUID4, data: CreateWebhook): diff --git a/mealie/services/event_bus_service/event_bus_listeners.py b/mealie/services/event_bus_service/event_bus_listeners.py index 586876c63..0d1a84154 100644 --- a/mealie/services/event_bus_service/event_bus_listeners.py +++ b/mealie/services/event_bus_service/event_bus_listeners.py @@ -3,7 +3,6 @@ import json from abc import ABC, abstractmethod from collections.abc import Generator from datetime import UTC, datetime -from typing import cast from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit from fastapi.encoders import jsonable_encoder @@ -148,15 +147,24 @@ class WebhookEventListener(EventListenerBase): def publish_to_subscribers(self, event: Event, subscribers: list[ReadWebhook]) -> None: with self.ensure_repos(self.group_id, self.household_id) as repos: - if event.document_data.document_type == EventDocumentType.mealplan: - webhook_data = cast(EventWebhookData, event.document_data) - meal_repo = repos.meals - meal_data = meal_repo.get_meals_by_date_range( - webhook_data.webhook_start_dt, webhook_data.webhook_end_dt - ) - if meal_data: - webhook_data.webhook_body = meal_data - self.publisher.publish(event, [webhook.url for webhook in subscribers]) + if not isinstance(event.document_data, EventWebhookData): + return + + match event.document_data.document_type: + case EventDocumentType.mealplan: + meal_repo = repos.meals + meal_data = meal_repo.get_meals_by_date_range( + event.document_data.webhook_start_dt, event.document_data.webhook_end_dt + ) + event.document_data.webhook_body = meal_data or None + case _: + if event.event_type is EventTypes.test_message: + # make sure the webhook has a valid body so it gets sent + event.document_data.webhook_body = event.document_data.webhook_body or [] + + # Only publish to subscribers if we have a webhook body to send + if event.document_data.webhook_body is not None: + self.publisher.publish(event, [webhook.url for webhook in subscribers]) def get_scheduled_webhooks(self, start_dt: datetime, end_dt: datetime) -> list[ReadWebhook]: """Fetches all scheduled webhooks from the database""" diff --git a/mealie/services/scheduler/tasks/post_webhooks.py b/mealie/services/scheduler/tasks/post_webhooks.py index 5298fa2c8..87feef270 100644 --- a/mealie/services/scheduler/tasks/post_webhooks.py +++ b/mealie/services/scheduler/tasks/post_webhooks.py @@ -79,12 +79,12 @@ def post_group_webhooks( ) -def post_single_webhook(webhook: ReadWebhook, message: str = "") -> None: +def post_test_webhook(webhook: ReadWebhook, message: str = "") -> None: dt = datetime.min.replace(tzinfo=UTC) - event_type = EventTypes.webhook_task + event_type = EventTypes.test_message event_document_data = EventWebhookData( - document_type=EventDocumentType.mealplan, + document_type=EventDocumentType.generic, operation=EventOperation.info, webhook_start_dt=dt, webhook_end_dt=dt, diff --git a/poetry.lock b/poetry.lock index 845879574..daa78b84c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -478,100 +478,100 @@ markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "coverage" -version = "7.10.0" +version = "7.10.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cbd823f7ea5286c26406ad9e54268544d82f3d1cadb6d4f3b85e9877f0cab1ef"}, - {file = "coverage-7.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab3f7a5dbaab937df0b9e9e8ec6eab235ba9a6f29d71fd3b24335affaed886cc"}, - {file = "coverage-7.10.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8c63aaf850523d8cbe3f5f1a5c78f689b223797bef902635f2493ab43498f36c"}, - {file = "coverage-7.10.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4c3133ce3fa84023f7c6921c4dca711be0b658784c5a51a797168229eae26172"}, - {file = "coverage-7.10.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3747d1d0af85b17d3a156cd30e4bbacf893815e846dc6c07050e9769da2b138e"}, - {file = "coverage-7.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:241923b350437f6a7cb343d9df72998305ef940c3c40009f06e05029a047677c"}, - {file = "coverage-7.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13e82e499309307104d58ac66f9eed237f7aaceab4325416645be34064d9a2be"}, - {file = "coverage-7.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bf73cdde4f6c9cd4457b00bf1696236796ac3a241f859a55e0f84a4c58326a7f"}, - {file = "coverage-7.10.0-cp310-cp310-win32.whl", hash = "sha256:2396e13275b37870a3345f58bce8b15a7e0a985771d13a4b16ce9129954e07d6"}, - {file = "coverage-7.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:9d45c7c71fb3d2da92ab893602e3f28f2d1560cec765a27e1824a6e0f7e92cfd"}, - {file = "coverage-7.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4abc01843581a6f9dd72d4d15761861190973a2305416639435ef509288f7a04"}, - {file = "coverage-7.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2093297773111d7d748fe4a99b68747e57994531fb5c57bbe439af17c11c169"}, - {file = "coverage-7.10.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:58240e27815bf105bd975c2fd42e700839f93d5aad034ef976411193ca32dbfd"}, - {file = "coverage-7.10.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d019eac999b40ad48521ea057958b07a9f549c0c6d257a20e5c7c4ba91af8d1c"}, - {file = "coverage-7.10.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35e0a1f5454bc80faf4ceab10d1d48f025f92046c9c0f3bec2e1a9dda55137f8"}, - {file = "coverage-7.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a93dd7759c416dd1cc754123b926d065055cb9a33b6699e64a1e5bdfae1ff459"}, - {file = "coverage-7.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7b3d737266048368a6ffd68f1ecd662c54de56535c82eb8f98a55ac216a72cbd"}, - {file = "coverage-7.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:93227c2707cb0effd9163cd0d8f0d9ab628982f7a3e915d6d64c7107867b9a07"}, - {file = "coverage-7.10.0-cp311-cp311-win32.whl", hash = "sha256:69270af3014ab3058ad6108c6d0e218166f568b5a7a070dc3d62c0a63aca1c4d"}, - {file = "coverage-7.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:43c16bbb661a7b4dafac0ab69e44d6dbcc6a64c4d93aefd89edc6f8911b6ab4a"}, - {file = "coverage-7.10.0-cp311-cp311-win_arm64.whl", hash = "sha256:14e7c23fcb74ed808efb4eb48fcd25a759f0e20f685f83266d1df174860e4733"}, - {file = "coverage-7.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a2adcfdaf3b4d69b0c64ad024fe9dd6996782b52790fb6033d90f36f39e287df"}, - {file = "coverage-7.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d7b27c2c0840e8eeff3f1963782bd9d3bc767488d2e67a31de18d724327f9f6"}, - {file = "coverage-7.10.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0ed50429786e935517570b08576a661fd79032e6060985ab492b9d39ba8e66ee"}, - {file = "coverage-7.10.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7171c139ab6571d70460ecf788b1dcaf376bfc75a42e1946b8c031d062bbbad4"}, - {file = "coverage-7.10.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a726aac7e6e406e403cdee4c443a13aed3ea3d67d856414c5beacac2e70c04e"}, - {file = "coverage-7.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2886257481a14e953e96861a00c0fe7151117a523f0470a51e392f00640bba03"}, - {file = "coverage-7.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:536578b79521e59c385a2e0a14a5dc2a8edd58761a966d79368413e339fc9535"}, - {file = "coverage-7.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77fae95558f7804a9ceefabf3c38ad41af1da92b39781b87197c6440dcaaa967"}, - {file = "coverage-7.10.0-cp312-cp312-win32.whl", hash = "sha256:97803e14736493eb029558e1502fe507bd6a08af277a5c8eeccf05c3e970cb84"}, - {file = "coverage-7.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:4c73ab554e54ffd38d114d6bc4a7115fb0c840cf6d8622211bee3da26e4bd25d"}, - {file = "coverage-7.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:3ae95d5a9aedab853641026b71b2ddd01983a0a7e9bf870a20ef3c8f5d904699"}, - {file = "coverage-7.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d883fee92b9245c0120fa25b5d36de71ccd4cfc29735906a448271e935d8d86d"}, - {file = "coverage-7.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c87e59e88268d30e33d3665ede4fbb77b513981a2df0059e7c106ca3de537586"}, - {file = "coverage-7.10.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f669d969f669a11d6ceee0b733e491d9a50573eb92a71ffab13b15f3aa2665d4"}, - {file = "coverage-7.10.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9582bd6c6771300a847d328c1c4204e751dbc339a9e249eecdc48cada41f72e6"}, - {file = "coverage-7.10.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91f97e9637dc7977842776fdb7ad142075d6fa40bc1b91cb73685265e0d31d32"}, - {file = "coverage-7.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ae4fa92b6601a62367c6c9967ad32ad4e28a89af54b6bb37d740946b0e0534dd"}, - {file = "coverage-7.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3a5cc8b97473e7b3623dd17a42d2194a2b49de8afecf8d7d03c8987237a9552c"}, - {file = "coverage-7.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc1cbb7f623250e047c32bd7aa1bb62ebc62608d5004d74df095e1059141ac88"}, - {file = "coverage-7.10.0-cp313-cp313-win32.whl", hash = "sha256:1380cc5666d778e77f1587cd88cc317158111f44d54c0dd3975f0936993284e0"}, - {file = "coverage-7.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:bf03cf176af098ee578b754a03add4690b82bdfe070adfb5d192d0b1cd15cf82"}, - {file = "coverage-7.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:8041c78cd145088116db2329b2fb6e89dc338116c962fbe654b7e9f5d72ab957"}, - {file = "coverage-7.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37cc2c06052771f48651160c080a86431884db9cd62ba622cab71049b90a95b3"}, - {file = "coverage-7.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:91f37270b16178b05fa107d85713d29bf21606e37b652d38646eef5f2dfbd458"}, - {file = "coverage-7.10.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f9b0b0168864d09bcb9a3837548f75121645c4cfd0efce0eb994c221955c5b10"}, - {file = "coverage-7.10.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:df0be435d3b616e7d3ee3f9ebbc0d784a213986fe5dff9c6f1042ee7cfd30157"}, - {file = "coverage-7.10.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35e9aba1c4434b837b1d567a533feba5ce205e8e91179c97974b28a14c23d3a0"}, - {file = "coverage-7.10.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a0b0c481e74dfad631bdc2c883e57d8b058e5c90ba8ef087600995daf7bbec18"}, - {file = "coverage-7.10.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8aec1b7c8922808a433c13cd44ace6fceac0609f4587773f6c8217a06102674b"}, - {file = "coverage-7.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:04ec59ceb3a594af0927f2e0d810e1221212abd9a2e6b5b917769ff48760b460"}, - {file = "coverage-7.10.0-cp313-cp313t-win32.whl", hash = "sha256:b6871e62d29646eb9b3f5f92def59e7575daea1587db21f99e2b19561187abda"}, - {file = "coverage-7.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff99cff2be44f78920b76803f782e91ffb46ccc7fa89eccccc0da3ca94285b64"}, - {file = "coverage-7.10.0-cp313-cp313t-win_arm64.whl", hash = "sha256:3246b63501348fe47299d12c47a27cfc221cfbffa1c2d857bcc8151323a4ae4f"}, - {file = "coverage-7.10.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:1f628d91f941a375b4503cb486148dbeeffb48e17bc080e0f0adfee729361574"}, - {file = "coverage-7.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3a0e101d5af952d233557e445f42ebace20b06b4ceb615581595ced5386caa78"}, - {file = "coverage-7.10.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ec4c1abbcc53f9f650acb14ea71725d88246a9e14ed42f8dd1b4e1b694e9d842"}, - {file = "coverage-7.10.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9c95f3a7f041b4cc68a8e3fecfa6366170c13ac773841049f1cd19c8650094e0"}, - {file = "coverage-7.10.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a2cd597b69c16d24e310611f2ed6fcfb8f09429316038c03a57e7b4f5345244"}, - {file = "coverage-7.10.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5e18591906a40c2b3609196c9879136aa4a47c5405052ca6b065ab10cb0b71d0"}, - {file = "coverage-7.10.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:485c55744252ed3f300cc1a0f5f365e684a0f2651a7aed301f7a67125906b80e"}, - {file = "coverage-7.10.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4dabea1516e5b0e9577282b149c8015e4dceeb606da66fb8d9d75932d5799bf5"}, - {file = "coverage-7.10.0-cp314-cp314-win32.whl", hash = "sha256:ac455f0537af22333fdc23b824cff81110dff2d47300bb2490f947b7c9a16017"}, - {file = "coverage-7.10.0-cp314-cp314-win_amd64.whl", hash = "sha256:b3c94b532f52f95f36fbfde3e178510a4d04eea640b484b2fe8f1491338dc653"}, - {file = "coverage-7.10.0-cp314-cp314-win_arm64.whl", hash = "sha256:2f807f2c3a9da99c80dfa73f09ef5fc3bd21e70c73ba1c538f23396a3a772252"}, - {file = "coverage-7.10.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:0a889ef25215990f65073c32cadf37483363a6a22914186dedc15a6b1a597d50"}, - {file = "coverage-7.10.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:39c638ecf3123805bacbf71aff8091e93af490c676fca10ab4e442375076e483"}, - {file = "coverage-7.10.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f2f2c0df0cbcf7dffa14f88a99c530cdef3f4fcfe935fa4f95d28be2e7ebc570"}, - {file = "coverage-7.10.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:048d19a5d641a2296745ab59f34a27b89a08c48d6d432685f22aac0ec1ea447f"}, - {file = "coverage-7.10.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1209b65d302d7a762004be37ab9396cbd8c99525ed572bdf455477e3a9449e06"}, - {file = "coverage-7.10.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e44aa79a36a7a0aec6ea109905a4a7c28552d90f34e5941b36217ae9556657d5"}, - {file = "coverage-7.10.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:96124be864b89395770c9a14652afcddbcdafb99466f53a9281c51d1466fb741"}, - {file = "coverage-7.10.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aad222e841f94b42bd1d6be71737fade66943853f0807cf87887c88f70883a2a"}, - {file = "coverage-7.10.0-cp314-cp314t-win32.whl", hash = "sha256:0eed5354d28caa5c8ad60e07e938f253e4b2810ea7dd56784339b6ce98b6f104"}, - {file = "coverage-7.10.0-cp314-cp314t-win_amd64.whl", hash = "sha256:3da35f9980058acb960b2644527cc3911f1e00f94d309d704b309fa984029109"}, - {file = "coverage-7.10.0-cp314-cp314t-win_arm64.whl", hash = "sha256:cb9e138dfa8a4b5c52c92a537651e2ca4f2ca48d8cb1bc01a2cbe7a5773c2426"}, - {file = "coverage-7.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cf283ec9c6878826291b17442eb5c32d3d252dc77d25e082b460b2d2ea67ba3c"}, - {file = "coverage-7.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8a83488c9fc6fff487f2ab551f9b64c70672357b8949f0951b0cd778b3ed8165"}, - {file = "coverage-7.10.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b86df3a7494d12338c11e59f210a0498d6109bbc3a4037f44de517ebb30a9c6b"}, - {file = "coverage-7.10.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6de9b460809e5e4787b742e786a36ae2346a53982e2be317cdcb7a33c56412fb"}, - {file = "coverage-7.10.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de5ef8a5954d63fa26a6aaa4600e48f885ce70fe495e8fce2c43aa9241fc9434"}, - {file = "coverage-7.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f178fe5e96f1e057527d5d0b20ab76b8616e0410169c33716cc226118eaf2c4f"}, - {file = "coverage-7.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4a38c42f0182a012fa9ec25bc6057e51114c1ba125be304f3f776d6d283cb303"}, - {file = "coverage-7.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:bf09beb5c1785cb36aad042455c0afab561399b74bb8cdaf6e82b7d77322df99"}, - {file = "coverage-7.10.0-cp39-cp39-win32.whl", hash = "sha256:cb8dfbb5d3016cb8d1940444c0c69b40cdc6c8bde724b07716ee5ea47b5273c6"}, - {file = "coverage-7.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:58ff22653cd93d563110d1ff2aef958f5f21be9e917762f8124d0e36f80f172a"}, - {file = "coverage-7.10.0-py3-none-any.whl", hash = "sha256:310a786330bb0463775c21d68e26e79973839b66d29e065c5787122b8dd4489f"}, - {file = "coverage-7.10.0.tar.gz", hash = "sha256:2768885aef484b5dcde56262cbdfba559b770bfc46994fe9485dc3614c7a5867"}, + {file = "coverage-7.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1c86eb388bbd609d15560e7cc0eb936c102b6f43f31cf3e58b4fd9afe28e1372"}, + {file = "coverage-7.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b4ba0f488c1bdb6bd9ba81da50715a372119785458831c73428a8566253b86b"}, + {file = "coverage-7.10.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083442ecf97d434f0cb3b3e3676584443182653da08b42e965326ba12d6b5f2a"}, + {file = "coverage-7.10.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c1a40c486041006b135759f59189385da7c66d239bad897c994e18fd1d0c128f"}, + {file = "coverage-7.10.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3beb76e20b28046989300c4ea81bf690df84ee98ade4dc0bbbf774a28eb98440"}, + {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bc265a7945e8d08da28999ad02b544963f813a00f3ed0a7a0ce4165fd77629f8"}, + {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:47c91f32ba4ac46f1e224a7ebf3f98b4b24335bad16137737fe71a5961a0665c"}, + {file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1a108dd78ed185020f66f131c60078f3fae3f61646c28c8bb4edd3fa121fc7fc"}, + {file = "coverage-7.10.1-cp310-cp310-win32.whl", hash = "sha256:7092cc82382e634075cc0255b0b69cb7cada7c1f249070ace6a95cb0f13548ef"}, + {file = "coverage-7.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:ac0c5bba938879c2fc0bc6c1b47311b5ad1212a9dcb8b40fe2c8110239b7faed"}, + {file = "coverage-7.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b45e2f9d5b0b5c1977cb4feb5f594be60eb121106f8900348e29331f553a726f"}, + {file = "coverage-7.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a7a4d74cb0f5e3334f9aa26af7016ddb94fb4bfa11b4a573d8e98ecba8c34f1"}, + {file = "coverage-7.10.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d4b0aab55ad60ead26159ff12b538c85fbab731a5e3411c642b46c3525863437"}, + {file = "coverage-7.10.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:dcc93488c9ebd229be6ee1f0d9aad90da97b33ad7e2912f5495804d78a3cd6b7"}, + {file = "coverage-7.10.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa309df995d020f3438407081b51ff527171cca6772b33cf8f85344b8b4b8770"}, + {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfb8b9d8855c8608f9747602a48ab525b1d320ecf0113994f6df23160af68262"}, + {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:320d86da829b012982b414c7cdda65f5d358d63f764e0e4e54b33097646f39a3"}, + {file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dc60ddd483c556590da1d9482a4518292eec36dd0e1e8496966759a1f282bcd0"}, + {file = "coverage-7.10.1-cp311-cp311-win32.whl", hash = "sha256:4fcfe294f95b44e4754da5b58be750396f2b1caca8f9a0e78588e3ef85f8b8be"}, + {file = "coverage-7.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:efa23166da3fe2915f8ab452dde40319ac84dc357f635737174a08dbd912980c"}, + {file = "coverage-7.10.1-cp311-cp311-win_arm64.whl", hash = "sha256:d12b15a8c3759e2bb580ffa423ae54be4f184cf23beffcbd641f4fe6e1584293"}, + {file = "coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4"}, + {file = "coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e"}, + {file = "coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4"}, + {file = "coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a"}, + {file = "coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe"}, + {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386"}, + {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6"}, + {file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f"}, + {file = "coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca"}, + {file = "coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3"}, + {file = "coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4"}, + {file = "coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39"}, + {file = "coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7"}, + {file = "coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892"}, + {file = "coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7"}, + {file = "coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994"}, + {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0"}, + {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7"}, + {file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7"}, + {file = "coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7"}, + {file = "coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e"}, + {file = "coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4"}, + {file = "coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72"}, + {file = "coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af"}, + {file = "coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7"}, + {file = "coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759"}, + {file = "coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324"}, + {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53"}, + {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f"}, + {file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd"}, + {file = "coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c"}, + {file = "coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18"}, + {file = "coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4"}, + {file = "coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c"}, + {file = "coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e"}, + {file = "coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b"}, + {file = "coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41"}, + {file = "coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f"}, + {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1"}, + {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2"}, + {file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4"}, + {file = "coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613"}, + {file = "coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e"}, + {file = "coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652"}, + {file = "coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894"}, + {file = "coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5"}, + {file = "coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2"}, + {file = "coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb"}, + {file = "coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b"}, + {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea"}, + {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd"}, + {file = "coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d"}, + {file = "coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47"}, + {file = "coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651"}, + {file = "coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab"}, + {file = "coverage-7.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:57b6e8789cbefdef0667e4a94f8ffa40f9402cee5fc3b8e4274c894737890145"}, + {file = "coverage-7.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:85b22a9cce00cb03156334da67eb86e29f22b5e93876d0dd6a98646bb8a74e53"}, + {file = "coverage-7.10.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:97b6983a2f9c76d345ca395e843a049390b39652984e4a3b45b2442fa733992d"}, + {file = "coverage-7.10.1-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ddf2a63b91399a1c2f88f40bc1705d5a7777e31c7e9eb27c602280f477b582ba"}, + {file = "coverage-7.10.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47ab6dbbc31a14c5486420c2c1077fcae692097f673cf5be9ddbec8cdaa4cdbc"}, + {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:21eb7d8b45d3700e7c2936a736f732794c47615a20f739f4133d5230a6512a88"}, + {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:283005bb4d98ae33e45f2861cd2cde6a21878661c9ad49697f6951b358a0379b"}, + {file = "coverage-7.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fefe31d61d02a8b2c419700b1fade9784a43d726de26495f243b663cd9fe1513"}, + {file = "coverage-7.10.1-cp39-cp39-win32.whl", hash = "sha256:e8ab8e4c7ec7f8a55ac05b5b715a051d74eac62511c6d96d5bb79aaafa3b04cf"}, + {file = "coverage-7.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:c36baa0ecde742784aa76c2b816466d3ea888d5297fda0edbac1bf48fa94688a"}, + {file = "coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7"}, + {file = "coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57"}, ] [package.extras] diff --git a/tests/integration_tests/user_household_tests/test_group_webhooks.py b/tests/integration_tests/user_household_tests/test_group_webhooks.py index 3dd7d87b5..e91a25dd3 100644 --- a/tests/integration_tests/user_household_tests/test_group_webhooks.py +++ b/tests/integration_tests/user_household_tests/test_group_webhooks.py @@ -3,6 +3,8 @@ from datetime import UTC, datetime import pytest from fastapi.testclient import TestClient +from mealie.schema.household.webhook import ReadWebhook +from mealie.services.scheduler.tasks.post_webhooks import post_test_webhook from tests.utils import api_routes, assert_deserialize, jsonify from tests.utils.fixture_schemas import TestUser @@ -84,3 +86,48 @@ def test_delete_webhook(api_client: TestClient, webhook_data, unique_user: TestU response = api_client.get(api_routes.households_webhooks_item_id(item_id), headers=unique_user.token) assert response.status_code == 404 + + +def test_post_test_webhook( + monkeypatch: pytest.MonkeyPatch, api_client: TestClient, unique_user: TestUser, webhook_data +): + # Mock the requests.post to avoid actual HTTP calls + class MockResponse: + status_code = 200 + + mock_calls = [] + + def mock_post(*args, **kwargs): + mock_calls.append((args, kwargs)) + return MockResponse() + + monkeypatch.setattr("mealie.services.event_bus_service.publisher.requests.post", mock_post) + + # Create a webhook and post it + response = api_client.post( + api_routes.households_webhooks, + json=jsonify(webhook_data), + headers=unique_user.token, + ) + webhook_dict = assert_deserialize(response, 201) + + webhook = ReadWebhook( + id=webhook_dict["id"], + name=webhook_dict["name"], + url=webhook_dict["url"], + scheduled_time=webhook_dict["scheduledTime"], + enabled=webhook_dict["enabled"], + group_id=webhook_dict["groupId"], + household_id=webhook_dict["householdId"], + ) + + test_message = "This is a test webhook message" + post_test_webhook(webhook, test_message) + + # Verify that requests.post was called with the correct parameters + assert len(mock_calls) == 1 + args, kwargs = mock_calls[0] + + assert kwargs["json"]["message"]["body"] == test_message + assert kwargs["timeout"] == 15 + assert args[0] == webhook.url