mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 06:23:34 -07:00
Merge branch 'mealie-next' into fix/admin-users-couldnt-delete-other-household-recipes
This commit is contained in:
commit
782ce3c380
73 changed files with 3151 additions and 2836 deletions
|
@ -12,7 +12,7 @@ repos:
|
||||||
exclude: ^tests/data/
|
exclude: ^tests/data/
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
# Ruff version.
|
# Ruff version.
|
||||||
rev: v0.12.4
|
rev: v0.12.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
- id: ruff-format
|
- id: ruff-format
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
<v-expand-transition>
|
<v-expand-transition>
|
||||||
<v-card
|
<v-card
|
||||||
:ripple="false"
|
:ripple="false"
|
||||||
:class="isFlat ? 'mx-auto flat' : 'mx-auto'"
|
:class="[
|
||||||
|
isFlat ? 'mx-auto flat' : 'mx-auto',
|
||||||
|
{ 'disable-highlight': disableHighlight },
|
||||||
|
]"
|
||||||
:style="{ cursor }"
|
:style="{ cursor }"
|
||||||
hover
|
hover
|
||||||
height="100%"
|
height="100%"
|
||||||
|
@ -181,6 +184,10 @@ export default defineNuxtComponent({
|
||||||
type: [Number],
|
type: [Number],
|
||||||
default: 150,
|
default: 150,
|
||||||
},
|
},
|
||||||
|
disableHighlight: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
emits: ["selected", "delete"],
|
emits: ["selected", "delete"],
|
||||||
setup(props) {
|
setup(props) {
|
||||||
|
@ -241,4 +248,8 @@ export default defineNuxtComponent({
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.disable-highlight :deep(.v-card__overlay) {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
<div>
|
<div>
|
||||||
<BaseDialog
|
<BaseDialog
|
||||||
v-model="madeThisDialog"
|
v-model="madeThisDialog"
|
||||||
|
:loading="madeThisFormLoading"
|
||||||
:icon="$globals.icons.chefHat"
|
:icon="$globals.icons.chefHat"
|
||||||
:title="$t('recipe.made-this')"
|
:title="$t('recipe.made-this')"
|
||||||
:submit-text="$t('recipe.add-to-timeline')"
|
:submit-text="$t('recipe.add-to-timeline')"
|
||||||
|
@ -119,8 +120,9 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { whenever } from "@vueuse/core";
|
import { whenever } from "@vueuse/core";
|
||||||
import { useUserApi } from "~/composables/api";
|
import { useUserApi } from "~/composables/api";
|
||||||
|
import { alert } from "~/composables/use-toast";
|
||||||
import { useHouseholdSelf } from "~/composables/use-households";
|
import { useHouseholdSelf } from "~/composables/use-households";
|
||||||
import type { Recipe, RecipeTimelineEventIn } from "~/lib/api/types/recipe";
|
import type { Recipe, RecipeTimelineEventIn, RecipeTimelineEventOut } from "~/lib/api/types/recipe";
|
||||||
import type { VForm } from "~/types/auto-forms";
|
import type { VForm } from "~/types/auto-forms";
|
||||||
|
|
||||||
export default defineNuxtComponent({
|
export default defineNuxtComponent({
|
||||||
|
@ -196,12 +198,25 @@ export default defineNuxtComponent({
|
||||||
newTimelineEventImagePreviewUrl.value = URL.createObjectURL(fileObject);
|
newTimelineEventImagePreviewUrl.value = URL.createObjectURL(fileObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
const state = reactive({ datePickerMenu: false });
|
const state = reactive({ datePickerMenu: false, madeThisFormLoading: false });
|
||||||
|
|
||||||
|
function resetMadeThisForm() {
|
||||||
|
state.madeThisFormLoading = false;
|
||||||
|
|
||||||
|
newTimelineEvent.value.eventMessage = "";
|
||||||
|
newTimelineEvent.value.timestamp = undefined;
|
||||||
|
clearImage();
|
||||||
|
madeThisDialog.value = false;
|
||||||
|
domMadeThisForm.value?.reset();
|
||||||
|
}
|
||||||
|
|
||||||
async function createTimelineEvent() {
|
async function createTimelineEvent() {
|
||||||
if (!(newTimelineEventTimestampString.value && props.recipe?.id && props.recipe?.slug)) {
|
if (!(newTimelineEventTimestampString.value && props.recipe?.id && props.recipe?.slug)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state.madeThisFormLoading = true;
|
||||||
|
|
||||||
newTimelineEvent.value.recipeId = props.recipe.id;
|
newTimelineEvent.value.recipeId = props.recipe.id;
|
||||||
// Note: $auth.user is now a ref
|
// Note: $auth.user is now a ref
|
||||||
newTimelineEvent.value.subject = i18n.t("recipe.user-made-this", { user: $auth.user.value?.fullName });
|
newTimelineEvent.value.subject = i18n.t("recipe.user-made-this", { user: $auth.user.value?.fullName });
|
||||||
|
@ -210,17 +225,37 @@ export default defineNuxtComponent({
|
||||||
// we choose the end of day so it always comes after "new recipe" events
|
// we choose the end of day so it always comes after "new recipe" events
|
||||||
newTimelineEvent.value.timestamp = new Date(newTimelineEventTimestampString.value + "T23:59:59").toISOString();
|
newTimelineEvent.value.timestamp = new Date(newTimelineEventTimestampString.value + "T23:59:59").toISOString();
|
||||||
|
|
||||||
|
let newEvent: RecipeTimelineEventOut | null = null;
|
||||||
|
try {
|
||||||
const eventResponse = await userApi.recipes.createTimelineEvent(newTimelineEvent.value);
|
const eventResponse = await userApi.recipes.createTimelineEvent(newTimelineEvent.value);
|
||||||
const newEvent = eventResponse.data;
|
newEvent = eventResponse.data;
|
||||||
|
if (!newEvent) {
|
||||||
|
throw new Error("No event created");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error("Failed to create timeline event:", error);
|
||||||
|
alert.error(i18n.t("recipe.failed-to-add-to-timeline"));
|
||||||
|
resetMadeThisForm();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// we also update the recipe's last made value
|
// we also update the recipe's last made value
|
||||||
if (!lastMade.value || newTimelineEvent.value.timestamp > lastMade.value) {
|
if (!lastMade.value || newTimelineEvent.value.timestamp > lastMade.value) {
|
||||||
|
try {
|
||||||
lastMade.value = newTimelineEvent.value.timestamp;
|
lastMade.value = newTimelineEvent.value.timestamp;
|
||||||
await userApi.recipes.updateLastMade(props.recipe.slug, newTimelineEvent.value.timestamp);
|
await userApi.recipes.updateLastMade(props.recipe.slug, newTimelineEvent.value.timestamp);
|
||||||
}
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error("Failed to update last made date:", error);
|
||||||
|
alert.error(i18n.t("recipe.failed-to-update-recipe"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// update the image, if provided
|
// update the image, if provided
|
||||||
if (newTimelineEventImage.value && newEvent) {
|
let imageError = false;
|
||||||
|
if (newTimelineEventImage.value) {
|
||||||
|
try {
|
||||||
const imageResponse = await userApi.recipes.updateTimelineEventImage(
|
const imageResponse = await userApi.recipes.updateTimelineEventImage(
|
||||||
newEvent.id,
|
newEvent.id,
|
||||||
newTimelineEventImage.value,
|
newTimelineEventImage.value,
|
||||||
|
@ -230,14 +265,20 @@ export default defineNuxtComponent({
|
||||||
newEvent.image = imageResponse.data.image;
|
newEvent.image = imageResponse.data.image;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (error) {
|
||||||
|
imageError = true;
|
||||||
|
console.error("Failed to upload image for timeline event:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// reset form
|
if (imageError) {
|
||||||
newTimelineEvent.value.eventMessage = "";
|
alert.error(i18n.t("recipe.added-to-timeline-but-failed-to-add-image"));
|
||||||
newTimelineEvent.value.timestamp = undefined;
|
}
|
||||||
clearImage();
|
else {
|
||||||
madeThisDialog.value = false;
|
alert.success(i18n.t("recipe.added-to-timeline"));
|
||||||
domMadeThisForm.value?.reset();
|
}
|
||||||
|
|
||||||
|
resetMadeThisForm();
|
||||||
context.emit("eventCreated", newEvent);
|
context.emit("eventCreated", newEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
</v-card>
|
</v-card>
|
||||||
<WakelockSwitch />
|
<WakelockSwitch />
|
||||||
<RecipePageComments
|
<RecipePageComments
|
||||||
v-if="!recipe.settings.disableComments && !isEditForm && !isCookMode"
|
v-if="!recipe.settings?.disableComments && !isEditForm && !isCookMode"
|
||||||
v-model="recipe"
|
v-model="recipe"
|
||||||
class="px-1 my-4 d-print-none"
|
class="px-1 my-4 d-print-none"
|
||||||
/>
|
/>
|
||||||
|
@ -278,7 +278,7 @@ async function deleteRecipe() {
|
||||||
* View Preferences
|
* View Preferences
|
||||||
*/
|
*/
|
||||||
const landscape = computed(() => {
|
const landscape = computed(() => {
|
||||||
const preferLandscape = recipe.value.settings.landscapeView;
|
const preferLandscape = recipe.value.settings?.landscapeView;
|
||||||
const smallScreen = !$vuetify.display.smAndUp.value;
|
const smallScreen = !$vuetify.display.smAndUp.value;
|
||||||
|
|
||||||
if (preferLandscape) {
|
if (preferLandscape) {
|
||||||
|
|
|
@ -242,28 +242,28 @@ export default defineNuxtComponent({
|
||||||
alert.success(i18n.t("events.event-deleted") as string);
|
alert.success(i18n.t("events.event-deleted") as string);
|
||||||
};
|
};
|
||||||
|
|
||||||
async function getRecipe(recipeId: string): Promise<Recipe | null> {
|
async function getRecipes(recipeIds: string[]): Promise<Recipe[]> {
|
||||||
const { data } = await api.recipes.getOne(recipeId);
|
const qf = "id IN [" + recipeIds.map(id => `"${id}"`).join(", ") + "]";
|
||||||
return data;
|
const { data } = await api.recipes.getAll(1, -1, { queryFilter: qf });
|
||||||
|
return data?.items || [];
|
||||||
};
|
};
|
||||||
|
|
||||||
async function updateRecipes(events: RecipeTimelineEventOut[]) {
|
async function updateRecipes(events: RecipeTimelineEventOut[]) {
|
||||||
const recipePromises: Promise<Recipe | null>[] = [];
|
const recipeIds: string[] = [];
|
||||||
const seenRecipeIds: string[] = [];
|
|
||||||
events.forEach((event) => {
|
events.forEach((event) => {
|
||||||
if (seenRecipeIds.includes(event.recipeId) || recipes.has(event.recipeId)) {
|
if (recipeIds.includes(event.recipeId) || recipes.has(event.recipeId)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
seenRecipeIds.push(event.recipeId);
|
recipeIds.push(event.recipeId);
|
||||||
recipePromises.push(getRecipe(event.recipeId));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const results = await Promise.all(recipePromises);
|
const results = await getRecipes(recipeIds);
|
||||||
results.forEach((result) => {
|
results.forEach((result) => {
|
||||||
if (result && result.id) {
|
if (!result?.id) {
|
||||||
recipes.set(result.id, result);
|
return;
|
||||||
}
|
}
|
||||||
|
recipes.set(result.id, result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
<v-row :class="useMobileFormat ? 'py-3 mx-0' : 'py-3 mx-0'" style="max-width: 100%">
|
<v-row :class="useMobileFormat ? 'py-3 mx-0' : 'py-3 mx-0'" style="max-width: 100%">
|
||||||
<v-col align-self="center" class="pa-0">
|
<v-col align-self="center" class="pa-0">
|
||||||
<RecipeCardMobile
|
<RecipeCardMobile
|
||||||
|
disable-highlight
|
||||||
:vertical="useMobileFormat"
|
:vertical="useMobileFormat"
|
||||||
:name="recipe.name"
|
:name="recipe.name"
|
||||||
:slug="recipe.slug"
|
:slug="recipe.slug"
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
<BaseButton
|
<BaseButton
|
||||||
v-if="canSubmit"
|
v-if="canSubmit"
|
||||||
type="submit"
|
type="submit"
|
||||||
:disabled="submitDisabled"
|
:disabled="submitDisabled || loading"
|
||||||
@click="submitEvent"
|
@click="submitEvent"
|
||||||
>
|
>
|
||||||
{{ submitText }}
|
{{ submitText }}
|
||||||
|
|
|
@ -26,10 +26,10 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
setup(_, { emit }) {
|
setup(props, { emit }) {
|
||||||
function parseEvent(event: any): object {
|
function parseEvent(event: any): object {
|
||||||
if (!event) {
|
if (!event) {
|
||||||
return {};
|
return props.modelValue || {};
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (event.json) {
|
if (event.json) {
|
||||||
|
@ -43,11 +43,14 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
return {};
|
return props.modelValue || {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function onChange(event: any) {
|
function onChange(event: any) {
|
||||||
emit("update:modelValue", parseEvent(event));
|
const parsed = parseEvent(event);
|
||||||
|
if (parsed !== props.modelValue) {
|
||||||
|
emit("update:modelValue", parsed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
onChange,
|
onChange,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import { useStoreActions } from "./partials/use-actions-factory";
|
import { useStoreActions } from "./partials/use-actions-factory";
|
||||||
import { useUserApi } from "~/composables/api";
|
import { useUserApi } from "~/composables/api";
|
||||||
import { useScaledAmount } from "~/composables/recipes/use-scaled-amount";
|
|
||||||
import type { GroupRecipeActionOut, GroupRecipeActionType } from "~/lib/api/types/household";
|
import type { GroupRecipeActionOut, GroupRecipeActionType } from "~/lib/api/types/household";
|
||||||
import type { RequestResponse } from "~/lib/api/types/non-generated";
|
import type { RequestResponse } from "~/lib/api/types/non-generated";
|
||||||
import type { Recipe } from "~/lib/api/types/recipe";
|
import type { Recipe } from "~/lib/api/types/recipe";
|
||||||
|
@ -68,7 +67,7 @@ export const useGroupRecipeActions = function (
|
||||||
window.open(url, "_blank")?.focus();
|
window.open(url, "_blank")?.focus();
|
||||||
return;
|
return;
|
||||||
case "post":
|
case "post":
|
||||||
return await api.groupRecipeActions.triggerAction(action.id, recipe.slug || "", useScaledAmount(recipe.recipeServings || 1, recipeScale).scaledAmount);
|
return await api.groupRecipeActions.triggerAction(action.id, recipe.slug || "", recipeScale);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ export const useGroupWebhooks = function () {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
enabled: false,
|
enabled: true,
|
||||||
name: "New Webhook",
|
name: "New Webhook",
|
||||||
url: "",
|
url: "",
|
||||||
scheduledTime: "00:00",
|
scheduledTime: "00:00",
|
||||||
|
|
|
@ -3,13 +3,13 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "繁體中文 (Chinese traditional)",
|
name: "繁體中文 (Chinese traditional)",
|
||||||
value: "zh-TW",
|
value: "zh-TW",
|
||||||
progress: 8,
|
progress: 9,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "简体中文 (Chinese simplified)",
|
name: "简体中文 (Chinese simplified)",
|
||||||
value: "zh-CN",
|
value: "zh-CN",
|
||||||
progress: 33,
|
progress: 35,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -33,7 +33,7 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "Svenska (Swedish)",
|
name: "Svenska (Swedish)",
|
||||||
value: "sv-SE",
|
value: "sv-SE",
|
||||||
progress: 47,
|
progress: 50,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -87,13 +87,13 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "Norsk (Norwegian)",
|
name: "Norsk (Norwegian)",
|
||||||
value: "no-NO",
|
value: "no-NO",
|
||||||
progress: 38,
|
progress: 39,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Nederlands (Dutch)",
|
name: "Nederlands (Dutch)",
|
||||||
value: "nl-NL",
|
value: "nl-NL",
|
||||||
progress: 44,
|
progress: 45,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -147,7 +147,7 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "עברית (Hebrew)",
|
name: "עברית (Hebrew)",
|
||||||
value: "he-IL",
|
value: "he-IL",
|
||||||
progress: 45,
|
progress: 67,
|
||||||
dir: "rtl",
|
dir: "rtl",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -213,7 +213,7 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "Deutsch (German)",
|
name: "Deutsch (German)",
|
||||||
value: "de-DE",
|
value: "de-DE",
|
||||||
progress: 63,
|
progress: 64,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -225,7 +225,7 @@ export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "Čeština (Czech)",
|
name: "Čeština (Czech)",
|
||||||
value: "cs-CZ",
|
value: "cs-CZ",
|
||||||
progress: 40,
|
progress: 39,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Ek het dit gemaak",
|
"made-this": "Ek het dit gemaak",
|
||||||
"how-did-it-turn-out": "Hoe het dit uitgedraai?",
|
"how-did-it-turn-out": "Hoe het dit uitgedraai?",
|
||||||
"user-made-this": "{user} het dit gemaak",
|
"user-made-this": "{user} het dit gemaak",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Boodskap sleutel",
|
"message-key": "Boodskap sleutel",
|
||||||
"parse": "Verwerk",
|
"parse": "Verwerk",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "لقد طبخت هذا",
|
"made-this": "لقد طبخت هذا",
|
||||||
"how-did-it-turn-out": "كيف كانت النتيجة؟",
|
"how-did-it-turn-out": "كيف كانت النتيجة؟",
|
||||||
"user-made-this": "{user} طبخ هذه",
|
"user-made-this": "{user} طبخ هذه",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "مفتاح الرساله",
|
"message-key": "مفتاح الرساله",
|
||||||
"parse": "تحليل",
|
"parse": "تحليل",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Сготвих рецептата",
|
"made-this": "Сготвих рецептата",
|
||||||
"how-did-it-turn-out": "Как се получи?",
|
"how-did-it-turn-out": "Как се получи?",
|
||||||
"user-made-this": "{user} направи това",
|
"user-made-this": "{user} направи това",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Екстрите за рецепти са ключова характеристика на Mealie API. Те Ви позволяват да създавате персонализирани JSON двойки ключ/стойност в рамките на рецепта, за да ги препращате към други приложения. Можете да използвате тези ключове, за да предоставите информация за задействане на автоматизация или персонализирани съобщения, за препращане към желаното от Вас устройство.",
|
"api-extras-description": "Екстрите за рецепти са ключова характеристика на Mealie API. Те Ви позволяват да създавате персонализирани JSON двойки ключ/стойност в рамките на рецепта, за да ги препращате към други приложения. Можете да използвате тези ключове, за да предоставите информация за задействане на автоматизация или персонализирани съобщения, за препращане към желаното от Вас устройство.",
|
||||||
"message-key": "Ключ на съобщението",
|
"message-key": "Ключ на съобщението",
|
||||||
"parse": "Анализирай",
|
"parse": "Анализирай",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Ho he fet",
|
"made-this": "Ho he fet",
|
||||||
"how-did-it-turn-out": "Com ha sortit?",
|
"how-did-it-turn-out": "Com ha sortit?",
|
||||||
"user-made-this": "{user} ha fet això",
|
"user-made-this": "{user} ha fet això",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Els extres de receptes són una funcionalitat clau de l'API de Mealie. Permeten crear parells clau/valor JSON personalitzats dins una recepta, per referenciar-los des d'aplicacions de tercers. Pots emprar aquestes claus per proveir informació, per exemple per a desencadenar automatitzacions o missatges personlitzats per a propagar al teu dispositiu desitjat.",
|
"api-extras-description": "Els extres de receptes són una funcionalitat clau de l'API de Mealie. Permeten crear parells clau/valor JSON personalitzats dins una recepta, per referenciar-los des d'aplicacions de tercers. Pots emprar aquestes claus per proveir informació, per exemple per a desencadenar automatitzacions o missatges personlitzats per a propagar al teu dispositiu desitjat.",
|
||||||
"message-key": "Clau del missatge",
|
"message-key": "Clau del missatge",
|
||||||
"parse": "Analitzar",
|
"parse": "Analitzar",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Toto jsem uvařil",
|
"made-this": "Toto jsem uvařil",
|
||||||
"how-did-it-turn-out": "Jak to dopadlo?",
|
"how-did-it-turn-out": "Jak to dopadlo?",
|
||||||
"user-made-this": "{user} udělal toto",
|
"user-made-this": "{user} udělal toto",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recepty jsou klíčovým rysem rozhraní pro API Mealie. Umožňují vytvářet vlastní klíče/hodnoty JSON v rámci receptu pro odkazy na aplikace třetích stran. Tyto klíče můžete použít pro poskytnutí informací, například pro aktivaci automatizace nebo vlastních zpráv pro přenos do požadovaného zařízení.",
|
"api-extras-description": "Recepty jsou klíčovým rysem rozhraní pro API Mealie. Umožňují vytvářet vlastní klíče/hodnoty JSON v rámci receptu pro odkazy na aplikace třetích stran. Tyto klíče můžete použít pro poskytnutí informací, například pro aktivaci automatizace nebo vlastních zpráv pro přenos do požadovaného zařízení.",
|
||||||
"message-key": "Klíč zprávy",
|
"message-key": "Klíč zprávy",
|
||||||
"parse": "Analyzovat",
|
"parse": "Analyzovat",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Jeg har lavet denne",
|
"made-this": "Jeg har lavet denne",
|
||||||
"how-did-it-turn-out": "Hvordan blev det?",
|
"how-did-it-turn-out": "Hvordan blev det?",
|
||||||
"user-made-this": "{user} lavede denne",
|
"user-made-this": "{user} lavede denne",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Opskrifter ekstra er en central feature i Mealie API. De giver dig mulighed for at oprette brugerdefinerede JSON nøgle / værdi par inden for en opskrift, at henvise til fra 3. parts applikationer. Du kan bruge disse nøgler til at give oplysninger, for eksempel til at udløse automatiseringer eller brugerdefinerede beskeder til at videresende til din ønskede enhed.",
|
"api-extras-description": "Opskrifter ekstra er en central feature i Mealie API. De giver dig mulighed for at oprette brugerdefinerede JSON nøgle / værdi par inden for en opskrift, at henvise til fra 3. parts applikationer. Du kan bruge disse nøgler til at give oplysninger, for eksempel til at udløse automatiseringer eller brugerdefinerede beskeder til at videresende til din ønskede enhed.",
|
||||||
"message-key": "Beskednøgle",
|
"message-key": "Beskednøgle",
|
||||||
"parse": "Behandl data",
|
"parse": "Behandl data",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Ich hab's gemacht",
|
"made-this": "Ich hab's gemacht",
|
||||||
"how-did-it-turn-out": "Wie ist es geworden?",
|
"how-did-it-turn-out": "Wie ist es geworden?",
|
||||||
"user-made-this": "{user} hat's gemacht",
|
"user-made-this": "{user} hat's gemacht",
|
||||||
|
"added-to-timeline": "Zur Zeitleiste hinzugefügt",
|
||||||
|
"failed-to-add-to-timeline": "Fehler beim Hinzufügen zur Zeitleiste",
|
||||||
|
"failed-to-update-recipe": "Fehler beim Aktualisieren des Rezepts",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Zur Zeitleiste hinzugefügt, Bild hinzufügen fehlgeschlagen",
|
||||||
"api-extras-description": "Rezepte-Extras sind ein Hauptmerkmal der Mealie API. Sie ermöglichen es dir, benutzerdefinierte JSON Key-Value-Paare zu einem Rezept zu erstellen, um Drittanbieter-Anwendungen zu steuern. Du kannst diese dazu verwenden, um Automatisierungen auszulösen oder benutzerdefinierte Nachrichten an bestimmte Geräte zu senden.",
|
"api-extras-description": "Rezepte-Extras sind ein Hauptmerkmal der Mealie API. Sie ermöglichen es dir, benutzerdefinierte JSON Key-Value-Paare zu einem Rezept zu erstellen, um Drittanbieter-Anwendungen zu steuern. Du kannst diese dazu verwenden, um Automatisierungen auszulösen oder benutzerdefinierte Nachrichten an bestimmte Geräte zu senden.",
|
||||||
"message-key": "Nachrichten-Schlüssel",
|
"message-key": "Nachrichten-Schlüssel",
|
||||||
"parse": "Parsen",
|
"parse": "Parsen",
|
||||||
|
|
|
@ -538,7 +538,7 @@
|
||||||
"date-format-hint-yyyy-mm-dd": "Μορφή ΕΕΕΕ-ΜΜ-ΗΗ",
|
"date-format-hint-yyyy-mm-dd": "Μορφή ΕΕΕΕ-ΜΜ-ΗΗ",
|
||||||
"add-to-list": "Προσθήκη σε λίστα",
|
"add-to-list": "Προσθήκη σε λίστα",
|
||||||
"add-to-plan": "Προσθήκη σε πρόγραμμα γευμάτων",
|
"add-to-plan": "Προσθήκη σε πρόγραμμα γευμάτων",
|
||||||
"add-to-timeline": "Προσθήκη στο χρονοδιάγραμμα",
|
"add-to-timeline": "Προσθήκη στο χρονολόγιο",
|
||||||
"recipe-added-to-list": "Η συνταγή προστέθηκε στη λίστα",
|
"recipe-added-to-list": "Η συνταγή προστέθηκε στη λίστα",
|
||||||
"recipes-added-to-list": "Οι συνταγές προστέθηκαν στη λίστα",
|
"recipes-added-to-list": "Οι συνταγές προστέθηκαν στη λίστα",
|
||||||
"successfully-added-to-list": "Επιτυχής προσθήκη στη λίστα",
|
"successfully-added-to-list": "Επιτυχής προσθήκη στη λίστα",
|
||||||
|
@ -570,15 +570,19 @@
|
||||||
"increase-scale-label": "Αύξηση κλίμακας κατά 1",
|
"increase-scale-label": "Αύξηση κλίμακας κατά 1",
|
||||||
"locked": "Κλειδωμένο",
|
"locked": "Κλειδωμένο",
|
||||||
"public-link": "Δημόσιος σύνδεσμος",
|
"public-link": "Δημόσιος σύνδεσμος",
|
||||||
"edit-timeline-event": "Επεξεργασία συμβάντος χρονοδιαγράμματος",
|
"edit-timeline-event": "Επεξεργασία συμβάντος χρονολόγιου",
|
||||||
"timeline": "Χρονοδιάγραμμα",
|
"timeline": "Χρονολόγιο",
|
||||||
"timeline-is-empty": "Δεν υπάρχει τίποτα ακόμα στο χρονοδιάγραμμα. Δοκιμάστε να κάνετε αυτή τη συνταγή!",
|
"timeline-is-empty": "Δεν υπάρχει τίποτα ακόμα στο χρονολόγιο. Δοκιμάστε να κάνετε αυτή τη συνταγή!",
|
||||||
"timeline-no-events-found-try-adjusting-filters": "Δεν βρέθηκαν συμβαντα. Δοκιμάστε να προσαρμόσετε τα φίλτρα αναζήτησης.",
|
"timeline-no-events-found-try-adjusting-filters": "Δεν βρέθηκαν συμβαντα. Δοκιμάστε να προσαρμόσετε τα φίλτρα αναζήτησης.",
|
||||||
"group-global-timeline": "Συνολικό χρονοδιάγραμμα {groupName}",
|
"group-global-timeline": "Συνολικό χρονολόγιο {groupName}",
|
||||||
"open-timeline": "Ανοιγμα χρονοδιαγράμματος",
|
"open-timeline": "Ανοιγμα χρονολόγιου",
|
||||||
"made-this": "Το έφτιαξα",
|
"made-this": "Το έφτιαξα",
|
||||||
"how-did-it-turn-out": "Ποιό ήταν το αποτέλεσμα;",
|
"how-did-it-turn-out": "Ποιό ήταν το αποτέλεσμα;",
|
||||||
"user-made-this": "Ο/η {user} το έφτιαξε αυτό",
|
"user-made-this": "Ο/η {user} το έφτιαξε αυτό",
|
||||||
|
"added-to-timeline": "Προστέθηκε στο χρονολόγιο",
|
||||||
|
"failed-to-add-to-timeline": "Αποτυχία προσθήκης στο χρονολόγιο",
|
||||||
|
"failed-to-update-recipe": "Αποτυχία ενημέρωσης συνταγής",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Προστέθηκε στο χρονολόγιο, αλλά απέτυχε η προσθήκη εικόνας",
|
||||||
"api-extras-description": "Τα extras συνταγών αποτελούν βασικό χαρακτηριστικό του Mealie API. Σας επιτρέπουν να δημιουργήσετε προσαρμοσμένα ζεύγη κλειδιού/τιμής JSON μέσα σε μια συνταγή, να παραπέμψετε σε εφαρμογές τρίτων. Μπορείτε να χρησιμοποιήσετε αυτά τα κλειδιά για την παροχή πληροφοριών, για παράδειγμα πυροδότηση αυτοματισμών ή μετάδοση προσαρμοσμένων μηνυμάτων στη συσκευή που επιθυμείτε.",
|
"api-extras-description": "Τα extras συνταγών αποτελούν βασικό χαρακτηριστικό του Mealie API. Σας επιτρέπουν να δημιουργήσετε προσαρμοσμένα ζεύγη κλειδιού/τιμής JSON μέσα σε μια συνταγή, να παραπέμψετε σε εφαρμογές τρίτων. Μπορείτε να χρησιμοποιήσετε αυτά τα κλειδιά για την παροχή πληροφοριών, για παράδειγμα πυροδότηση αυτοματισμών ή μετάδοση προσαρμοσμένων μηνυμάτων στη συσκευή που επιθυμείτε.",
|
||||||
"message-key": "Κλειδί Μηνύματος",
|
"message-key": "Κλειδί Μηνύματος",
|
||||||
"parse": "Ανάλυση",
|
"parse": "Ανάλυση",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -580,6 +580,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Lo hice",
|
"made-this": "Lo hice",
|
||||||
"how-did-it-turn-out": "¿Cómo resultó esto?",
|
"how-did-it-turn-out": "¿Cómo resultó esto?",
|
||||||
"user-made-this": "{user} hizo esto",
|
"user-made-this": "{user} hizo esto",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Los extras de las recetas son una característica clave de la API de Mealie. Permiten crear pares json clave/valor personalizados dentro de una receta para acceder desde aplicaciones de terceros. Puede utilizar estas claves para almacenar información, para activar la automatización o mensajes personalizados para transmitir al dispositivo deseado.",
|
"api-extras-description": "Los extras de las recetas son una característica clave de la API de Mealie. Permiten crear pares json clave/valor personalizados dentro de una receta para acceder desde aplicaciones de terceros. Puede utilizar estas claves para almacenar información, para activar la automatización o mensajes personalizados para transmitir al dispositivo deseado.",
|
||||||
"message-key": "Clave de mensaje",
|
"message-key": "Clave de mensaje",
|
||||||
"parse": "Analizar",
|
"parse": "Analizar",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Olen seda valmistanud",
|
"made-this": "Olen seda valmistanud",
|
||||||
"how-did-it-turn-out": "Kuidas tuli see välja?",
|
"how-did-it-turn-out": "Kuidas tuli see välja?",
|
||||||
"user-made-this": "{user} on seda valmistanud",
|
"user-made-this": "{user} on seda valmistanud",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Retsepti väljavõtted on Meali API oluline funktsioon. Neid saab kasutada kohandatud JSON-võtme/väärtuse paaride loomiseks retseptis, et viidata kolmandate osapoolte rakendustele. Neid klahve saab kasutada teabe edastamiseks, näiteks automaatse toimingu või kohandatud sõnumi käivitamiseks teie valitud seadmele.",
|
"api-extras-description": "Retsepti väljavõtted on Meali API oluline funktsioon. Neid saab kasutada kohandatud JSON-võtme/väärtuse paaride loomiseks retseptis, et viidata kolmandate osapoolte rakendustele. Neid klahve saab kasutada teabe edastamiseks, näiteks automaatse toimingu või kohandatud sõnumi käivitamiseks teie valitud seadmele.",
|
||||||
"message-key": "Sõnumi võti",
|
"message-key": "Sõnumi võti",
|
||||||
"parse": "Analüüsi",
|
"parse": "Analüüsi",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Tein tämän",
|
"made-this": "Tein tämän",
|
||||||
"how-did-it-turn-out": "Miten se onnistui?",
|
"how-did-it-turn-out": "Miten se onnistui?",
|
||||||
"user-made-this": "{user} teki tämän",
|
"user-made-this": "{user} teki tämän",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Reseptiekstrat ovat Mealien API:n tärkeä ominaisuus. Niiden avulla voidaan luoda mukautettuja JSON-avain/arvo-pareja reseptin sisällä viitaten kolmannen osapuolen sovelluksiin. Näitä avaimia voi käyttää tiedon antamiseksi, esimerkiksi automaattisen toiminnon tai mukautetun viestin käynnistämiseksi haluamaasi laitteeseen.",
|
"api-extras-description": "Reseptiekstrat ovat Mealien API:n tärkeä ominaisuus. Niiden avulla voidaan luoda mukautettuja JSON-avain/arvo-pareja reseptin sisällä viitaten kolmannen osapuolen sovelluksiin. Näitä avaimia voi käyttää tiedon antamiseksi, esimerkiksi automaattisen toiminnon tai mukautetun viestin käynnistämiseksi haluamaasi laitteeseen.",
|
||||||
"message-key": "Viestiavain",
|
"message-key": "Viestiavain",
|
||||||
"parse": "Jäsennä",
|
"parse": "Jäsennä",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Je l’ai cuisiné",
|
"made-this": "Je l’ai cuisiné",
|
||||||
"how-did-it-turn-out": "C’était bon ?",
|
"how-did-it-turn-out": "C’était bon ?",
|
||||||
"user-made-this": "{user} l’a cuisiné",
|
"user-made-this": "{user} l’a cuisiné",
|
||||||
|
"added-to-timeline": "Ajouté à l’historique",
|
||||||
|
"failed-to-add-to-timeline": "Ajout dans l’historique en échec",
|
||||||
|
"failed-to-update-recipe": "Impossible de mettre à jour la recette",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Ajouté à l’historique, mais impossible d’ajouter l’image",
|
||||||
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
||||||
"message-key": "Clé de message",
|
"message-key": "Clé de message",
|
||||||
"parse": "Analyser",
|
"parse": "Analyser",
|
||||||
|
@ -599,10 +603,10 @@
|
||||||
"create-recipe-from-an-image": "Créer une recette à partir d’une image",
|
"create-recipe-from-an-image": "Créer une recette à partir d’une image",
|
||||||
"create-recipe-from-an-image-description": "Créez une recette en téléchargeant une image de celle-ci. Mealie utilisera l’IA pour tenter d’extraire le texte et de créer une recette.",
|
"create-recipe-from-an-image-description": "Créez une recette en téléchargeant une image de celle-ci. Mealie utilisera l’IA pour tenter d’extraire le texte et de créer une recette.",
|
||||||
"crop-and-rotate-the-image": "Rogner et pivoter l’image pour que seul le texte soit visible, et qu’il soit dans la bonne orientation.",
|
"crop-and-rotate-the-image": "Rogner et pivoter l’image pour que seul le texte soit visible, et qu’il soit dans la bonne orientation.",
|
||||||
"create-from-images": "Create from Images",
|
"create-from-images": "Créer à partir d’images",
|
||||||
"should-translate-description": "Traduire la recette dans ma langue",
|
"should-translate-description": "Traduire la recette dans ma langue",
|
||||||
"please-wait-image-procesing": "Veuillez patienter, l’image est en cours de traitement. Cela peut prendre du temps.",
|
"please-wait-image-procesing": "Veuillez patienter, l’image est en cours de traitement. Cela peut prendre du temps.",
|
||||||
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
|
"please-wait-images-processing": "Veuillez patienter, les images sont en cours de traitement. Cela peut prendre un certain temps.",
|
||||||
"bulk-url-import": "Importation en masse d'URL",
|
"bulk-url-import": "Importation en masse d'URL",
|
||||||
"debug-scraper": "Déboguer le récupérateur",
|
"debug-scraper": "Déboguer le récupérateur",
|
||||||
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Créer une recette en fournissant le nom. Toutes les recettes doivent avoir des noms uniques.",
|
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Créer une recette en fournissant le nom. Toutes les recettes doivent avoir des noms uniques.",
|
||||||
|
@ -662,9 +666,9 @@
|
||||||
},
|
},
|
||||||
"reset-servings-count": "Réinitialiser le nombre de portions",
|
"reset-servings-count": "Réinitialiser le nombre de portions",
|
||||||
"not-linked-ingredients": "Ingrédients supplémentaires",
|
"not-linked-ingredients": "Ingrédients supplémentaires",
|
||||||
"upload-another-image": "Upload another image",
|
"upload-another-image": "Télécharger une autre image",
|
||||||
"upload-images": "Upload images",
|
"upload-images": "Télécharger des images",
|
||||||
"upload-more-images": "Upload more images"
|
"upload-more-images": "Télécharger d'autres images"
|
||||||
},
|
},
|
||||||
"recipe-finder": {
|
"recipe-finder": {
|
||||||
"recipe-finder": "Recherche de recette",
|
"recipe-finder": "Recherche de recette",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Je l’ai cuisiné",
|
"made-this": "Je l’ai cuisiné",
|
||||||
"how-did-it-turn-out": "C’était bon ?",
|
"how-did-it-turn-out": "C’était bon ?",
|
||||||
"user-made-this": "{user} l’a cuisiné",
|
"user-made-this": "{user} l’a cuisiné",
|
||||||
|
"added-to-timeline": "Ajouté à l’historique",
|
||||||
|
"failed-to-add-to-timeline": "Ajout dans l’historique en échec",
|
||||||
|
"failed-to-update-recipe": "Impossible de mettre à jour la recette",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Ajouté à l’historique, mais impossible d’ajouter l’image",
|
||||||
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
||||||
"message-key": "Clé de message",
|
"message-key": "Clé de message",
|
||||||
"parse": "Analyser",
|
"parse": "Analyser",
|
||||||
|
@ -599,10 +603,10 @@
|
||||||
"create-recipe-from-an-image": "Créer une recette à partir d’une image",
|
"create-recipe-from-an-image": "Créer une recette à partir d’une image",
|
||||||
"create-recipe-from-an-image-description": "Créez une recette en téléversant une image de celle-ci. Mealie utilisera l’IA pour tenter d’extraire le texte et de créer une recette.",
|
"create-recipe-from-an-image-description": "Créez une recette en téléversant une image de celle-ci. Mealie utilisera l’IA pour tenter d’extraire le texte et de créer une recette.",
|
||||||
"crop-and-rotate-the-image": "Rogner et pivoter l’image pour que seul le texte soit visible et qu’il soit dans la bonne orientation.",
|
"crop-and-rotate-the-image": "Rogner et pivoter l’image pour que seul le texte soit visible et qu’il soit dans la bonne orientation.",
|
||||||
"create-from-images": "Create from Images",
|
"create-from-images": "Créer à partir d’images",
|
||||||
"should-translate-description": "Traduire la recette dans ma langue",
|
"should-translate-description": "Traduire la recette dans ma langue",
|
||||||
"please-wait-image-procesing": "Veuillez patienter, l'image est en cours de traitement. Cela peut prendre un certain temps.",
|
"please-wait-image-procesing": "Veuillez patienter, l'image est en cours de traitement. Cela peut prendre un certain temps.",
|
||||||
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
|
"please-wait-images-processing": "Veuillez patienter, les images sont en cours de traitement. Cela peut prendre un certain temps.",
|
||||||
"bulk-url-import": "Importation en masse d'URL",
|
"bulk-url-import": "Importation en masse d'URL",
|
||||||
"debug-scraper": "Déboguer le récupérateur",
|
"debug-scraper": "Déboguer le récupérateur",
|
||||||
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Créer une recette en fournissant le nom. Toutes les recettes doivent avoir des noms uniques.",
|
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Créer une recette en fournissant le nom. Toutes les recettes doivent avoir des noms uniques.",
|
||||||
|
@ -662,9 +666,9 @@
|
||||||
},
|
},
|
||||||
"reset-servings-count": "Réinitialiser le nombre de portions",
|
"reset-servings-count": "Réinitialiser le nombre de portions",
|
||||||
"not-linked-ingredients": "Ingrédients supplémentaires",
|
"not-linked-ingredients": "Ingrédients supplémentaires",
|
||||||
"upload-another-image": "Upload another image",
|
"upload-another-image": "Télécharger une autre image",
|
||||||
"upload-images": "Upload images",
|
"upload-images": "Télécharger des images",
|
||||||
"upload-more-images": "Upload more images"
|
"upload-more-images": "Télécharger d'autres images"
|
||||||
},
|
},
|
||||||
"recipe-finder": {
|
"recipe-finder": {
|
||||||
"recipe-finder": "Recherche de recette",
|
"recipe-finder": "Recherche de recette",
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"log-lines": "Lignes de log",
|
"log-lines": "Lignes de log",
|
||||||
"not-demo": "Non",
|
"not-demo": "Non",
|
||||||
"portfolio": "Portfolio",
|
"portfolio": "Portfolio",
|
||||||
"production": "Réalisation",
|
"production": "Production",
|
||||||
"support": "Soutenir",
|
"support": "Soutenir",
|
||||||
"version": "Version",
|
"version": "Version",
|
||||||
"unknown-version": "inconnu",
|
"unknown-version": "inconnu",
|
||||||
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Je l’ai cuisiné",
|
"made-this": "Je l’ai cuisiné",
|
||||||
"how-did-it-turn-out": "C’était bon ?",
|
"how-did-it-turn-out": "C’était bon ?",
|
||||||
"user-made-this": "{user} l’a cuisiné",
|
"user-made-this": "{user} l’a cuisiné",
|
||||||
|
"added-to-timeline": "Ajouté à l’historique",
|
||||||
|
"failed-to-add-to-timeline": "Ajout dans l’historique en échec",
|
||||||
|
"failed-to-update-recipe": "Impossible de mettre à jour la recette",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Ajouté à l’historique, mais impossible d’ajouter l’image",
|
||||||
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
"api-extras-description": "Les suppléments des recettes sont une fonctionnalité clé de l’API Mealie. Ils permettent de créer des paires JSON clé/valeur personnalisées dans une recette, qui peuvent être référencées depuis des applications tierces. Ces clés peuvent être utilisées par exemple pour déclencher des tâches automatisées ou des messages personnalisés à transmettre à l’appareil souhaité.",
|
||||||
"message-key": "Clé de message",
|
"message-key": "Clé de message",
|
||||||
"parse": "Analyser",
|
"parse": "Analyser",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Eu fixen isto",
|
"made-this": "Eu fixen isto",
|
||||||
"how-did-it-turn-out": "Que tal ficou?",
|
"how-did-it-turn-out": "Que tal ficou?",
|
||||||
"user-made-this": "{user} fixo isto",
|
"user-made-this": "{user} fixo isto",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Os extras de receitas son unha característica clave da API de Mealie. Permítenche crear pares de clave/valor JSON personalizados dentro dunha receita, para facer referencia desde aplicacións de terceiros. Podes usar estas teclas para proporcionar información, por exemplo, para activar automatizacións ou mensaxes personalizadas para transmitir ao dispositivo que desexes.",
|
"api-extras-description": "Os extras de receitas son unha característica clave da API de Mealie. Permítenche crear pares de clave/valor JSON personalizados dentro dunha receita, para facer referencia desde aplicacións de terceiros. Podes usar estas teclas para proporcionar información, por exemplo, para activar automatizacións ou mensaxes personalizadas para transmitir ao dispositivo que desexes.",
|
||||||
"message-key": "Chave de Mensaxen",
|
"message-key": "Chave de Mensaxen",
|
||||||
"parse": "Interpretar",
|
"parse": "Interpretar",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "הכנתי את זה",
|
"made-this": "הכנתי את זה",
|
||||||
"how-did-it-turn-out": "איך יצא?",
|
"how-did-it-turn-out": "איך יצא?",
|
||||||
"user-made-this": "{user} הכין את זה",
|
"user-made-this": "{user} הכין את זה",
|
||||||
|
"added-to-timeline": "נוסף לציר הזמן",
|
||||||
|
"failed-to-add-to-timeline": "כישלון בהוספה לציר הזמן",
|
||||||
|
"failed-to-update-recipe": "כישלון בעדכון מתכון",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "נוסף לציר הזמן עם כישלון בהוספת תמונה",
|
||||||
"api-extras-description": "מתכונים נוספים הם יכולת מפתח של Mealie API. הם מאפשרים ליצור צמדי key/value בצורת JSON על מנת לקרוא אותם בתוכנת צד שלישית. תוכלו להשתמש בצמדים האלה כדי לספק מידע, לדוגמא להפעיל אוטומציות או הודעות מותאמות אישית למכשירים מסויימים.",
|
"api-extras-description": "מתכונים נוספים הם יכולת מפתח של Mealie API. הם מאפשרים ליצור צמדי key/value בצורת JSON על מנת לקרוא אותם בתוכנת צד שלישית. תוכלו להשתמש בצמדים האלה כדי לספק מידע, לדוגמא להפעיל אוטומציות או הודעות מותאמות אישית למכשירים מסויימים.",
|
||||||
"message-key": "מפתח הודעה",
|
"message-key": "מפתח הודעה",
|
||||||
"parse": "ניתוח",
|
"parse": "ניתוח",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Napravio/la sam ovo",
|
"made-this": "Napravio/la sam ovo",
|
||||||
"how-did-it-turn-out": "Kako je ispalo?",
|
"how-did-it-turn-out": "Kako je ispalo?",
|
||||||
"user-made-this": "{user} je napravio/la ovo",
|
"user-made-this": "{user} je napravio/la ovo",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Ključ poruke",
|
"message-key": "Ključ poruke",
|
||||||
"parse": "Razluči (parsiraj)",
|
"parse": "Razluči (parsiraj)",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Elkészítettem ezt",
|
"made-this": "Elkészítettem ezt",
|
||||||
"how-did-it-turn-out": "Hogyan sikerült?",
|
"how-did-it-turn-out": "Hogyan sikerült?",
|
||||||
"user-made-this": "ezt {user} készítette el",
|
"user-made-this": "ezt {user} készítette el",
|
||||||
|
"added-to-timeline": "Idővonalhoz hozzáadva",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Nem sikerült frissíteni a receptet",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Idővonalhoz hozzáadva, azonban a kép hozzáadása sikertelen",
|
||||||
"api-extras-description": "A receptek extrái a Mealie API egyik legfontosabb szolgáltatása. Lehetővé teszik, hogy egyéni JSON kulcs/érték párokat hozzon létre egy receptben, amelyekre harmadik féltől származó alkalmazásokból hivatkozhat. Ezeket a kulcsokat információszolgáltatásra használhatja, például automatizmusok vagy egyéni üzenetek indítására, amelyeket a kívánt eszközre küldhet.",
|
"api-extras-description": "A receptek extrái a Mealie API egyik legfontosabb szolgáltatása. Lehetővé teszik, hogy egyéni JSON kulcs/érték párokat hozzon létre egy receptben, amelyekre harmadik féltől származó alkalmazásokból hivatkozhat. Ezeket a kulcsokat információszolgáltatásra használhatja, például automatizmusok vagy egyéni üzenetek indítására, amelyeket a kívánt eszközre küldhet.",
|
||||||
"message-key": "Üzenetkulcs",
|
"message-key": "Üzenetkulcs",
|
||||||
"parse": "Előkészítés",
|
"parse": "Előkészítés",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "L'Ho Preparato",
|
"made-this": "L'Ho Preparato",
|
||||||
"how-did-it-turn-out": "Come è venuto?",
|
"how-did-it-turn-out": "Come è venuto?",
|
||||||
"user-made-this": "{user} l'ha preparato",
|
"user-made-this": "{user} l'ha preparato",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Le opzioni extra delle ricette sono una caratteristica fondamentale dell'API Mealie. Consentono di creare json personalizzati con coppie di chiavi/valore all'interno di una ricetta a cui fare riferimento tramite applicazioni terze. È possibile utilizzare queste chiavi per inserire informazioni, per esempio per attivare automazioni oppure per inoltrare messaggi personalizzati al dispositivo desiderato.",
|
"api-extras-description": "Le opzioni extra delle ricette sono una caratteristica fondamentale dell'API Mealie. Consentono di creare json personalizzati con coppie di chiavi/valore all'interno di una ricetta a cui fare riferimento tramite applicazioni terze. È possibile utilizzare queste chiavi per inserire informazioni, per esempio per attivare automazioni oppure per inoltrare messaggi personalizzati al dispositivo desiderato.",
|
||||||
"message-key": "Chiave Messaggio",
|
"message-key": "Chiave Messaggio",
|
||||||
"parse": "Analizza",
|
"parse": "Analizza",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "これを作りました",
|
"made-this": "これを作りました",
|
||||||
"how-did-it-turn-out": "どうなりましたか?",
|
"how-did-it-turn-out": "どうなりましたか?",
|
||||||
"user-made-this": "{user} がこれを作りました",
|
"user-made-this": "{user} がこれを作りました",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "レシピの追加機能はMealie APIの主な機能です。 サードパーティアプリから参照するために、レシピ内にカスタムJSONキー/値のペアを作成することができます。 これらのキーを使用して情報を提供することができます。例えば、自動化をトリガーしたり、カスタムメッセージをお使いのデバイスにリレーするなどです。",
|
"api-extras-description": "レシピの追加機能はMealie APIの主な機能です。 サードパーティアプリから参照するために、レシピ内にカスタムJSONキー/値のペアを作成することができます。 これらのキーを使用して情報を提供することができます。例えば、自動化をトリガーしたり、カスタムメッセージをお使いのデバイスにリレーするなどです。",
|
||||||
"message-key": "メッセージキー",
|
"message-key": "メッセージキー",
|
||||||
"parse": "解析",
|
"parse": "解析",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Aš tai gaminau",
|
"made-this": "Aš tai gaminau",
|
||||||
"how-did-it-turn-out": "Kaip tai pavyko?",
|
"how-did-it-turn-out": "Kaip tai pavyko?",
|
||||||
"user-made-this": "{user} gamino šį patiekalą",
|
"user-made-this": "{user} gamino šį patiekalą",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Žinutės raktas",
|
"message-key": "Žinutės raktas",
|
||||||
"parse": "Nuskaityti",
|
"parse": "Nuskaityti",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Es to pagatavoju",
|
"made-this": "Es to pagatavoju",
|
||||||
"how-did-it-turn-out": "Kā tas izrādījās?",
|
"how-did-it-turn-out": "Kā tas izrādījās?",
|
||||||
"user-made-this": "{user}izdarīja šo",
|
"user-made-this": "{user}izdarīja šo",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recepšu ekstras ir galvenā Mealie API iezīme. Tie ļauj jums izveidot pielāgotus JSON atslēgu/vērtību pārus receptē, lai atsaucotos no trešo pušu lietojumprogrammām. Varat izmantot šos taustiņus, lai sniegtu informāciju, piemēram, aktivizētu automatizāciju vai pielāgotus ziņojumus, lai tos pārsūtītu uz vēlamo ierīci.",
|
"api-extras-description": "Recepšu ekstras ir galvenā Mealie API iezīme. Tie ļauj jums izveidot pielāgotus JSON atslēgu/vērtību pārus receptē, lai atsaucotos no trešo pušu lietojumprogrammām. Varat izmantot šos taustiņus, lai sniegtu informāciju, piemēram, aktivizētu automatizāciju vai pielāgotus ziņojumus, lai tos pārsūtītu uz vēlamo ierīci.",
|
||||||
"message-key": "Ziņojuma atslēga",
|
"message-key": "Ziņojuma atslēga",
|
||||||
"parse": "Parsēšana",
|
"parse": "Parsēšana",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Ik heb dit gemaakt",
|
"made-this": "Ik heb dit gemaakt",
|
||||||
"how-did-it-turn-out": "Hoe was je gerecht?",
|
"how-did-it-turn-out": "Hoe was je gerecht?",
|
||||||
"user-made-this": "{user} heeft dit gemaakt",
|
"user-made-this": "{user} heeft dit gemaakt",
|
||||||
|
"added-to-timeline": "Toevoegen aan tijdlijn",
|
||||||
|
"failed-to-add-to-timeline": "Toegevoegd aan tijdlijn",
|
||||||
|
"failed-to-update-recipe": "Updaten recept mislukt",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Toegevoegd aan tijdlijn maar afbeelding is niet gelukt",
|
||||||
"api-extras-description": "Extra's bij recepten zijn een belangrijke functie van de Mealie API. Hiermee kun je aangepaste JSON key/value paren maken bij een recept om naar te verwijzen vanuit applicaties van derden. Je kunt deze sleutels gebruiken om extra informatie te bieden, bijvoorbeeld om automatisering aan te sturen of aangepaste berichten naar je gewenste apparaat te laten versturen.",
|
"api-extras-description": "Extra's bij recepten zijn een belangrijke functie van de Mealie API. Hiermee kun je aangepaste JSON key/value paren maken bij een recept om naar te verwijzen vanuit applicaties van derden. Je kunt deze sleutels gebruiken om extra informatie te bieden, bijvoorbeeld om automatisering aan te sturen of aangepaste berichten naar je gewenste apparaat te laten versturen.",
|
||||||
"message-key": "Berichtsleutel",
|
"message-key": "Berichtsleutel",
|
||||||
"parse": "Ontleed",
|
"parse": "Ontleed",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Jeg har laget dette",
|
"made-this": "Jeg har laget dette",
|
||||||
"how-did-it-turn-out": "Hvordan ble det?",
|
"how-did-it-turn-out": "Hvordan ble det?",
|
||||||
"user-made-this": "{user} har laget dette",
|
"user-made-this": "{user} har laget dette",
|
||||||
|
"added-to-timeline": "Legg til tidslinje",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Kunne ikke oppdatere oppskriften",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Lagt til i tidslinjen, men klarte ikke å legge til bilde",
|
||||||
"api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.",
|
"api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.",
|
||||||
"message-key": "Meldingsnøkkel",
|
"message-key": "Meldingsnøkkel",
|
||||||
"parse": "Analyser",
|
"parse": "Analyser",
|
||||||
|
@ -599,10 +603,10 @@
|
||||||
"create-recipe-from-an-image": "Opprett oppskrift fra et bilde",
|
"create-recipe-from-an-image": "Opprett oppskrift fra et bilde",
|
||||||
"create-recipe-from-an-image-description": "Opprett en oppskrift ved å laste opp et bilde av den. Mealie vil forsøke å hente ut teksten fra bildet ved bruk av AI, og lage en ny oppskrift.",
|
"create-recipe-from-an-image-description": "Opprett en oppskrift ved å laste opp et bilde av den. Mealie vil forsøke å hente ut teksten fra bildet ved bruk av AI, og lage en ny oppskrift.",
|
||||||
"crop-and-rotate-the-image": "Beskjær og roter bildet slik at bare teksten er synlig, og at det er i riktig retning.",
|
"crop-and-rotate-the-image": "Beskjær og roter bildet slik at bare teksten er synlig, og at det er i riktig retning.",
|
||||||
"create-from-images": "Create from Images",
|
"create-from-images": "Opprett fra bilde",
|
||||||
"should-translate-description": "Oversett oppskriften til mitt språk",
|
"should-translate-description": "Oversett oppskriften til mitt språk",
|
||||||
"please-wait-image-procesing": "Vent litt, bildet blir prosessert. Dette kan ta litt tid.",
|
"please-wait-image-procesing": "Vent litt, bildet blir prosessert. Dette kan ta litt tid.",
|
||||||
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
|
"please-wait-images-processing": "Vent litt, bildet blir prosessert. Dette kan ta litt tid.",
|
||||||
"bulk-url-import": "Importer flere nettadresser",
|
"bulk-url-import": "Importer flere nettadresser",
|
||||||
"debug-scraper": "Feilsøk skraper",
|
"debug-scraper": "Feilsøk skraper",
|
||||||
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Opprett en oppskrift ved å angi navnet. Alle oppskrifter må ha unike navn.",
|
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Opprett en oppskrift ved å angi navnet. Alle oppskrifter må ha unike navn.",
|
||||||
|
@ -662,9 +666,9 @@
|
||||||
},
|
},
|
||||||
"reset-servings-count": "Nullstill antall porsjoner",
|
"reset-servings-count": "Nullstill antall porsjoner",
|
||||||
"not-linked-ingredients": "Tilleggsingredienser",
|
"not-linked-ingredients": "Tilleggsingredienser",
|
||||||
"upload-another-image": "Upload another image",
|
"upload-another-image": "Last opp nytt bilde",
|
||||||
"upload-images": "Upload images",
|
"upload-images": "Last opp bilder",
|
||||||
"upload-more-images": "Upload more images"
|
"upload-more-images": "Last opp flere bilder"
|
||||||
},
|
},
|
||||||
"recipe-finder": {
|
"recipe-finder": {
|
||||||
"recipe-finder": "Oppskriftsfinner",
|
"recipe-finder": "Oppskriftsfinner",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Ugotowałem to",
|
"made-this": "Ugotowałem to",
|
||||||
"how-did-it-turn-out": "Jak się to udało?",
|
"how-did-it-turn-out": "Jak się to udało?",
|
||||||
"user-made-this": "{user} ugotował(a) to",
|
"user-made-this": "{user} ugotował(a) to",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Dodatki w przepisach są kluczową cechą API Mealie. Pozwalają na tworzenie niestandardowych par kluczy/wartości JSON w przepisie do odwoływania się przez zewnętrzne aplikacje. Możesz użyć tych kluczy do wyzwalania automatyzacji lub przekazywania niestandardowych wiadomości do twoich wybranych urządzeń.",
|
"api-extras-description": "Dodatki w przepisach są kluczową cechą API Mealie. Pozwalają na tworzenie niestandardowych par kluczy/wartości JSON w przepisie do odwoływania się przez zewnętrzne aplikacje. Możesz użyć tych kluczy do wyzwalania automatyzacji lub przekazywania niestandardowych wiadomości do twoich wybranych urządzeń.",
|
||||||
"message-key": "Klucz Wiadomości",
|
"message-key": "Klucz Wiadomości",
|
||||||
"parse": "Analizuj",
|
"parse": "Analizuj",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Eu Fiz Isso",
|
"made-this": "Eu Fiz Isso",
|
||||||
"how-did-it-turn-out": "Como que ficou?",
|
"how-did-it-turn-out": "Como que ficou?",
|
||||||
"user-made-this": "{user} fez isso",
|
"user-made-this": "{user} fez isso",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Extras de receitas são atributos-chave da API do Mealie. Assim, você pode criar pares chave/valor JSON personalizados dentro de uma receita, referenciando aplicações de terceiros. Você pode usar as chaves para fornecer informações, como por ex. ativar automações ou mensagens que serão enviadas a seus dispositivos.",
|
"api-extras-description": "Extras de receitas são atributos-chave da API do Mealie. Assim, você pode criar pares chave/valor JSON personalizados dentro de uma receita, referenciando aplicações de terceiros. Você pode usar as chaves para fornecer informações, como por ex. ativar automações ou mensagens que serão enviadas a seus dispositivos.",
|
||||||
"message-key": "Chave de mensagem",
|
"message-key": "Chave de mensagem",
|
||||||
"parse": "Analisar",
|
"parse": "Analisar",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Eu fiz isto",
|
"made-this": "Eu fiz isto",
|
||||||
"how-did-it-turn-out": "Que tal ficou?",
|
"how-did-it-turn-out": "Que tal ficou?",
|
||||||
"user-made-this": "{user} fez isto",
|
"user-made-this": "{user} fez isto",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Extras para receitas são funcionalidades chave da API Mealie. Estas permitem criar, dentro de uma receita, pares personalizados de chave/valor em JSON, para referência a partir de aplicações de terceiros. Pode usar essas chaves para fornecer informações, por exemplo, para acionar automações ou mensagens personalizadas para transmitir a um determinado dispositivo.",
|
"api-extras-description": "Extras para receitas são funcionalidades chave da API Mealie. Estas permitem criar, dentro de uma receita, pares personalizados de chave/valor em JSON, para referência a partir de aplicações de terceiros. Pode usar essas chaves para fornecer informações, por exemplo, para acionar automações ou mensagens personalizadas para transmitir a um determinado dispositivo.",
|
||||||
"message-key": "Chave de Mensagem",
|
"message-key": "Chave de Mensagem",
|
||||||
"parse": "Interpretar",
|
"parse": "Interpretar",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Am făcut asta",
|
"made-this": "Am făcut asta",
|
||||||
"how-did-it-turn-out": "Cum a ieșit?",
|
"how-did-it-turn-out": "Cum a ieșit?",
|
||||||
"user-made-this": "{user} a făcut asta",
|
"user-made-this": "{user} a făcut asta",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras sunt o caracteristică cheie a API-ului Mealie. Îți permit să creezi perechi personalizate de cheie/valoare JSON într-o rețetă, ca să faci referire la aplicații terțe. Puteți utiliza aceste chei pentru a furniza informații, de exemplu pentru a declanșa automatizări sau mesaje personalizate pentru a transmite dispozitivul dorit.",
|
"api-extras-description": "Recipes extras sunt o caracteristică cheie a API-ului Mealie. Îți permit să creezi perechi personalizate de cheie/valoare JSON într-o rețetă, ca să faci referire la aplicații terțe. Puteți utiliza aceste chei pentru a furniza informații, de exemplu pentru a declanșa automatizări sau mesaje personalizate pentru a transmite dispozitivul dorit.",
|
||||||
"message-key": "Cheie mesaj",
|
"message-key": "Cheie mesaj",
|
||||||
"parse": "Parsează",
|
"parse": "Parsează",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Я приготовил это",
|
"made-this": "Я приготовил это",
|
||||||
"how-did-it-turn-out": "Что получилось?",
|
"how-did-it-turn-out": "Что получилось?",
|
||||||
"user-made-this": "{user} приготовил это",
|
"user-made-this": "{user} приготовил это",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Дополнения к рецептам являются ключевым элементом Mealie API. Они позволяют создавать пользовательские пары json ключ/значение в рецепте для ссылания на другие приложения. Вы можете использовать эти ключи, чтобы сохранить нужную информацию, например, для автоматизаций или уведомлений на ваши устройства.",
|
"api-extras-description": "Дополнения к рецептам являются ключевым элементом Mealie API. Они позволяют создавать пользовательские пары json ключ/значение в рецепте для ссылания на другие приложения. Вы можете использовать эти ключи, чтобы сохранить нужную информацию, например, для автоматизаций или уведомлений на ваши устройства.",
|
||||||
"message-key": "Ключ сообщения",
|
"message-key": "Ключ сообщения",
|
||||||
"parse": "Обработать",
|
"parse": "Обработать",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Toto som uvaril",
|
"made-this": "Toto som uvaril",
|
||||||
"how-did-it-turn-out": "Ako to dopadlo?",
|
"how-did-it-turn-out": "Ako to dopadlo?",
|
||||||
"user-made-this": "{user} toto uvaril/-a",
|
"user-made-this": "{user} toto uvaril/-a",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "API dolnky receptov sú kľúčovou funkcionalitou Mealie API. Umožňujú používateľom vytvárať vlastné JSON páry kľúč/hodnota v rámci receptu, a využiť v aplikáciách tretích strán. Údaje uložené pod jednotlivými kľúčmi je možné využiť napríklad ako spúšťač automatizovaných procesov, či pri zasielaní vlastných správ do vami zvolených zariadení.",
|
"api-extras-description": "API dolnky receptov sú kľúčovou funkcionalitou Mealie API. Umožňujú používateľom vytvárať vlastné JSON páry kľúč/hodnota v rámci receptu, a využiť v aplikáciách tretích strán. Údaje uložené pod jednotlivými kľúčmi je možné využiť napríklad ako spúšťač automatizovaných procesov, či pri zasielaní vlastných správ do vami zvolených zariadení.",
|
||||||
"message-key": "Kľúč správy",
|
"message-key": "Kľúč správy",
|
||||||
"parse": "Analyzovať",
|
"parse": "Analyzovať",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Naredil sem to",
|
"made-this": "Naredil sem to",
|
||||||
"how-did-it-turn-out": "Kako se je izkazalo?",
|
"how-did-it-turn-out": "Kako se je izkazalo?",
|
||||||
"user-made-this": "{user} je tole pripravil/a",
|
"user-made-this": "{user} je tole pripravil/a",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Dodatni podatki za recepte so ključna funkcionalnost Mealie APIja. Omogočajo ustvarjanje lastnih JSON ključ / vrednost parov v okviru recepta, da lahko do njih dostopajo zunanje aplikacije. Te ključe lahko uporabiš za posredovanje informacij, na primer za sprožanje avtomatike ali sporočanje prilagojenih sporočil na poljubno napravo.",
|
"api-extras-description": "Dodatni podatki za recepte so ključna funkcionalnost Mealie APIja. Omogočajo ustvarjanje lastnih JSON ključ / vrednost parov v okviru recepta, da lahko do njih dostopajo zunanje aplikacije. Te ključe lahko uporabiš za posredovanje informacij, na primer za sprožanje avtomatike ali sporočanje prilagojenih sporočil na poljubno napravo.",
|
||||||
"message-key": "Ključ sporočila",
|
"message-key": "Ključ sporočila",
|
||||||
"parse": "Razloči",
|
"parse": "Razloči",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Jag lagade den här",
|
"made-this": "Jag lagade den här",
|
||||||
"how-did-it-turn-out": "Hur blev rätten?",
|
"how-did-it-turn-out": "Hur blev rätten?",
|
||||||
"user-made-this": "{user} lagade detta",
|
"user-made-this": "{user} lagade detta",
|
||||||
|
"added-to-timeline": "Lagt till i tidslinjen",
|
||||||
|
"failed-to-add-to-timeline": "Kunde inte lägga till i tidslinjen",
|
||||||
|
"failed-to-update-recipe": "Kunde inte uppdatera receptet",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Lagt till i tidslinjen men kunde inte lägga till bild",
|
||||||
"api-extras-description": "Recept API-tillägg är en viktig funktion i Mealie's API. Med hjälp av dem kan du skapa anpassade JSON-nyckel/värdepar i ett recept, som du kan referera till från tredjepartsapplikationer. Du kan använda dessa nycklar för att tillhandahålla information, till exempel för att trigga automatiseringar eller anpassade meddelanden som ska vidarebefordras till önskad enhet.",
|
"api-extras-description": "Recept API-tillägg är en viktig funktion i Mealie's API. Med hjälp av dem kan du skapa anpassade JSON-nyckel/värdepar i ett recept, som du kan referera till från tredjepartsapplikationer. Du kan använda dessa nycklar för att tillhandahålla information, till exempel för att trigga automatiseringar eller anpassade meddelanden som ska vidarebefordras till önskad enhet.",
|
||||||
"message-key": "Meddelandenyckel",
|
"message-key": "Meddelandenyckel",
|
||||||
"parse": "Läs in",
|
"parse": "Läs in",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Bunu ben yaptım",
|
"made-this": "Bunu ben yaptım",
|
||||||
"how-did-it-turn-out": "Nasıl oldu?",
|
"how-did-it-turn-out": "Nasıl oldu?",
|
||||||
"user-made-this": "{user} bunu yaptı",
|
"user-made-this": "{user} bunu yaptı",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Tarif ekstraları Mealie API'nin önemli bir özelliğidir. Üçüncü taraf uygulamalardan referans almak üzere bir tarif içinde özel JSON anahtar/değer çiftleri oluşturmanıza olanak tanır. Bu tuşları, örneğin otomasyonları tetiklemek veya istediğiniz cihaza iletilecek özel mesajları bilgi sağlamak için kullanabilirsiniz.",
|
"api-extras-description": "Tarif ekstraları Mealie API'nin önemli bir özelliğidir. Üçüncü taraf uygulamalardan referans almak üzere bir tarif içinde özel JSON anahtar/değer çiftleri oluşturmanıza olanak tanır. Bu tuşları, örneğin otomasyonları tetiklemek veya istediğiniz cihaza iletilecek özel mesajları bilgi sağlamak için kullanabilirsiniz.",
|
||||||
"message-key": "İleti Anahtarı",
|
"message-key": "İleti Anahtarı",
|
||||||
"parse": "Ayrıştırma",
|
"parse": "Ayrıştırma",
|
||||||
|
@ -724,7 +728,7 @@
|
||||||
"backup-restore": "Yedekleme Geri Yükleme",
|
"backup-restore": "Yedekleme Geri Yükleme",
|
||||||
"back-restore-description": "Bu yedeği geri yüklemek, veritabanınızdaki ve veri dizinindeki tüm mevcut verilerin üzerine yazacak ve bunları bu yedeğin içeriğiyle değiştirecektir. {cannot-be-undone} Geri yükleme başarılı olursa oturumunuz kapatılacaktır.",
|
"back-restore-description": "Bu yedeği geri yüklemek, veritabanınızdaki ve veri dizinindeki tüm mevcut verilerin üzerine yazacak ve bunları bu yedeğin içeriğiyle değiştirecektir. {cannot-be-undone} Geri yükleme başarılı olursa oturumunuz kapatılacaktır.",
|
||||||
"cannot-be-undone": "Bu işlem geri alınamaz - dikkatli kullanın.",
|
"cannot-be-undone": "Bu işlem geri alınamaz - dikkatli kullanın.",
|
||||||
"postgresql-note": "If you are using PostgreSQL, please review the {backup-restore-process} prior to restoring.",
|
"postgresql-note": "",
|
||||||
"backup-restore-process-in-the-documentation": "belgelerdeki yedekleme/geri yükleme işlemini",
|
"backup-restore-process-in-the-documentation": "belgelerdeki yedekleme/geri yükleme işlemini",
|
||||||
"irreversible-acknowledgment": "Bu işlemin geri döndürülemez, yıkıcı ve veri kaybına neden olabileceğini anlıyorum",
|
"irreversible-acknowledgment": "Bu işlemin geri döndürülemez, yıkıcı ve veri kaybına neden olabileceğini anlıyorum",
|
||||||
"restore-backup": "Yedeği Geri Yükle"
|
"restore-backup": "Yedeği Geri Yükle"
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "Я це приготував",
|
"made-this": "Я це приготував",
|
||||||
"how-did-it-turn-out": "Як вийшло?",
|
"how-did-it-turn-out": "Як вийшло?",
|
||||||
"user-made-this": "{user} зробив це",
|
"user-made-this": "{user} зробив це",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Додатки в рецептах - ключова функція API Mealie. Вони дозволяють створювати користувацьку пару JSON ключів та значень в рецепті для сторонніх додатків. Це можна використовувати для автоматизації або для створення користувацьких повідомлень для сторонніх сервісів.",
|
"api-extras-description": "Додатки в рецептах - ключова функція API Mealie. Вони дозволяють створювати користувацьку пару JSON ключів та значень в рецепті для сторонніх додатків. Це можна використовувати для автоматизації або для створення користувацьких повідомлень для сторонніх сервісів.",
|
||||||
"message-key": "Ключ повідомлення",
|
"message-key": "Ключ повідомлення",
|
||||||
"parse": "Проаналізувати",
|
"parse": "Проаналізувати",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
"date": "日期",
|
"date": "日期",
|
||||||
"id": "Id",
|
"id": "Id",
|
||||||
"owner": "所有者",
|
"owner": "所有者",
|
||||||
"change-owner": "Change Owner",
|
"change-owner": "修改拥有者",
|
||||||
"date-added": "添加日期",
|
"date-added": "添加日期",
|
||||||
"none": "无",
|
"none": "无",
|
||||||
"run": "运行",
|
"run": "运行",
|
||||||
|
@ -214,10 +214,10 @@
|
||||||
"confirm-delete-generic-items": "你确定删除以下条目吗?",
|
"confirm-delete-generic-items": "你确定删除以下条目吗?",
|
||||||
"organizers": "管理器",
|
"organizers": "管理器",
|
||||||
"caution": "注意!",
|
"caution": "注意!",
|
||||||
"show-advanced": "Show Advanced",
|
"show-advanced": "显示进阶设置",
|
||||||
"add-field": "Add Field",
|
"add-field": "添加项目",
|
||||||
"date-created": "Date Created",
|
"date-created": "创建日期",
|
||||||
"date-updated": "Date Updated"
|
"date-updated": "修改日期"
|
||||||
},
|
},
|
||||||
"group": {
|
"group": {
|
||||||
"are-you-sure-you-want-to-delete-the-group": "您确定要删除<b>{groupName}<b/>吗?",
|
"are-you-sure-you-want-to-delete-the-group": "您确定要删除<b>{groupName}<b/>吗?",
|
||||||
|
@ -246,14 +246,14 @@
|
||||||
"manage-members": "管理成员",
|
"manage-members": "管理成员",
|
||||||
"manage-members-description": "管理你家庭中成员的权限。 {manage} 表示允许用户访问数据管理页面, {invite} 表示允许用户生成链接邀请其他用户。 群组所有者不能更改自己的权限。",
|
"manage-members-description": "管理你家庭中成员的权限。 {manage} 表示允许用户访问数据管理页面, {invite} 表示允许用户生成链接邀请其他用户。 群组所有者不能更改自己的权限。",
|
||||||
"manage": "管理",
|
"manage": "管理",
|
||||||
"manage-household": "Manage Household",
|
"manage-household": "管理家庭",
|
||||||
"invite": "邀请",
|
"invite": "邀请",
|
||||||
"looking-to-update-your-profile": "想要更新您的个人档案吗?",
|
"looking-to-update-your-profile": "想要更新您的个人档案吗?",
|
||||||
"default-recipe-preferences-description": "当本组中新建食谱时会应用这些默认设置,你可以在具体某个食谱的设置中重新修改",
|
"default-recipe-preferences-description": "当本组中新建食谱时会应用这些默认设置,你可以在具体某个食谱的设置中重新修改",
|
||||||
"default-recipe-preferences": "食谱默认偏好设置",
|
"default-recipe-preferences": "食谱默认偏好设置",
|
||||||
"group-preferences": "群组偏好设置",
|
"group-preferences": "群组偏好设置",
|
||||||
"private-group": "私人群组",
|
"private-group": "私人群组",
|
||||||
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings",
|
"private-group-description": "将群组设为私密会禁用所有公开查看选项,且此设置会覆盖任何个人的公开查看设置",
|
||||||
"enable-public-access": "启用公开访问",
|
"enable-public-access": "启用公开访问",
|
||||||
"enable-public-access-description": "默认公开群组食谱,即访客用户无需登录便可查看食谱",
|
"enable-public-access-description": "默认公开群组食谱,即访客用户无需登录便可查看食谱",
|
||||||
"allow-users-outside-of-your-group-to-see-your-recipes": "允许组外用户查看你的食谱",
|
"allow-users-outside-of-your-group-to-see-your-recipes": "允许组外用户查看你的食谱",
|
||||||
|
@ -267,7 +267,7 @@
|
||||||
"disable-users-from-commenting-on-recipes": "禁止用户评论食谱",
|
"disable-users-from-commenting-on-recipes": "禁止用户评论食谱",
|
||||||
"disable-users-from-commenting-on-recipes-description": "隐藏食谱的评论区并禁止评论",
|
"disable-users-from-commenting-on-recipes-description": "隐藏食谱的评论区并禁止评论",
|
||||||
"disable-organizing-recipe-ingredients-by-units-and-food": "不使用预定义的食品种类和计量单位来编辑食材条目",
|
"disable-organizing-recipe-ingredients-by-units-and-food": "不使用预定义的食品种类和计量单位来编辑食材条目",
|
||||||
"disable-organizing-recipe-ingredients-by-units-and-food-description": "Hides the Food, Unit, and Amount fields for ingredients and treats ingredients as plain text fields",
|
"disable-organizing-recipe-ingredients-by-units-and-food-description": "隐藏食材的“食物”“单位”和“数量”字段,将食材视为纯文本字段",
|
||||||
"general-preferences": "通用设置",
|
"general-preferences": "通用设置",
|
||||||
"group-recipe-preferences": "群组食谱偏好设置",
|
"group-recipe-preferences": "群组食谱偏好设置",
|
||||||
"report": "报告",
|
"report": "报告",
|
||||||
|
@ -276,7 +276,7 @@
|
||||||
"admin-group-management": "管理员组管理",
|
"admin-group-management": "管理员组管理",
|
||||||
"admin-group-management-text": "对本群组的更改将被立即应用。",
|
"admin-group-management-text": "对本群组的更改将被立即应用。",
|
||||||
"group-id-value": "群组ID:{0}",
|
"group-id-value": "群组ID:{0}",
|
||||||
"total-households": "Total Households",
|
"total-households": "总共家庭",
|
||||||
"you-must-select-a-group-before-selecting-a-household": "你必须先选择一个组才能选择一个家庭"
|
"you-must-select-a-group-before-selecting-a-household": "你必须先选择一个组才能选择一个家庭"
|
||||||
},
|
},
|
||||||
"household": {
|
"household": {
|
||||||
|
@ -296,9 +296,9 @@
|
||||||
"lock-recipe-edits-from-other-households": "禁止其他家庭编辑食谱",
|
"lock-recipe-edits-from-other-households": "禁止其他家庭编辑食谱",
|
||||||
"lock-recipe-edits-from-other-households-description": "启用时,只有家庭成员可以编辑由您家庭创建的食谱",
|
"lock-recipe-edits-from-other-households-description": "启用时,只有家庭成员可以编辑由您家庭创建的食谱",
|
||||||
"household-recipe-preferences": "家庭食谱偏好设置",
|
"household-recipe-preferences": "家庭食谱偏好设置",
|
||||||
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.",
|
"default-recipe-preferences-description": "这些是在您的家庭账户中创建新食谱时的默认设置,可在各食谱的设置菜单中单独修改。",
|
||||||
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes",
|
"allow-users-outside-of-your-household-to-see-your-recipes": "允许其他家庭用户查看你的收据",
|
||||||
"allow-users-outside-of-your-household-to-see-your-recipes-description": "When enabled you can use a public share link to share specific recipes without authorizing the user. When disabled, you can only share recipes with users who are in your household or with a pre-generated private link",
|
"allow-users-outside-of-your-household-to-see-your-recipes-description": "启用后,您可以使用公开分享链接分享特定食谱,无需对用户进行授权。禁用后,您只能与家庭账户中的用户分享食谱,或通过预先生成的私密链接分享",
|
||||||
"household-preferences": "家庭偏好设置"
|
"household-preferences": "家庭偏好设置"
|
||||||
},
|
},
|
||||||
"meal-plan": {
|
"meal-plan": {
|
||||||
|
@ -321,14 +321,14 @@
|
||||||
"mealplan-settings": "饮食计划设置",
|
"mealplan-settings": "饮食计划设置",
|
||||||
"mealplan-update-failed": "更新饮食计划失败",
|
"mealplan-update-failed": "更新饮食计划失败",
|
||||||
"mealplan-updated": "已更新饮食计划",
|
"mealplan-updated": "已更新饮食计划",
|
||||||
"mealplan-households-description": "If no household is selected, recipes can be added from any household",
|
"mealplan-households-description": "若未选择家庭账户,可从任意家庭账户添加食谱",
|
||||||
"any-category": "Any Category",
|
"any-category": "所有分类",
|
||||||
"any-tag": "Any Tag",
|
"any-tag": "所有标签",
|
||||||
"any-household": "Any Household",
|
"any-household": "所有家庭",
|
||||||
"no-meal-plan-defined-yet": "还没有制定饮食计划",
|
"no-meal-plan-defined-yet": "还没有制定饮食计划",
|
||||||
"no-meal-planned-for-today": "今日没有饮食计划",
|
"no-meal-planned-for-today": "今日没有饮食计划",
|
||||||
"numberOfDays-hint": "Number of days on page load",
|
"numberOfDays-hint": "页面加载天数",
|
||||||
"numberOfDays-label": "Default Days",
|
"numberOfDays-label": "默认天数",
|
||||||
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "只有属于这些分类的食谱才会被用于饮食计划",
|
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "只有属于这些分类的食谱才会被用于饮食计划",
|
||||||
"planner": "计划人",
|
"planner": "计划人",
|
||||||
"quick-week": "快速创建周食谱计划",
|
"quick-week": "快速创建周食谱计划",
|
||||||
|
@ -357,7 +357,7 @@
|
||||||
"for-type-meal-types": "作为 {0}",
|
"for-type-meal-types": "作为 {0}",
|
||||||
"meal-plan-rules": "饮食计划规则",
|
"meal-plan-rules": "饮食计划规则",
|
||||||
"new-rule": "新建规则",
|
"new-rule": "新建规则",
|
||||||
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.",
|
"meal-plan-rules-description": "您可以为膳食计划创建自动选择食谱的规则。服务器在生成膳食计划时,会根据这些规则确定可供随机选择的食谱范围。请注意,若规则具有相同的日期/类型限制,其筛选条件将被合并。实际上,无需创建重复规则,但系统允许此类操作。",
|
||||||
"new-rule-description": "当为饮食计划新建规则时,您可以限制此规则应用于一周的特定某天和/或特定的用餐类型。若将规则应用于所有时间或者所有用餐类型,您可以设定规则为“任意”,此字段值适用于任何时间或用餐类型。",
|
"new-rule-description": "当为饮食计划新建规则时,您可以限制此规则应用于一周的特定某天和/或特定的用餐类型。若将规则应用于所有时间或者所有用餐类型,您可以设定规则为“任意”,此字段值适用于任何时间或用餐类型。",
|
||||||
"recipe-rules": "食谱规则",
|
"recipe-rules": "食谱规则",
|
||||||
"applies-to-all-days": "应用到所有日期",
|
"applies-to-all-days": "应用到所有日期",
|
||||||
|
@ -418,7 +418,7 @@
|
||||||
},
|
},
|
||||||
"recipekeeper": {
|
"recipekeeper": {
|
||||||
"title": "食谱保存者",
|
"title": "食谱保存者",
|
||||||
"description-long": "Mealie can import recipes from Recipe Keeper. Export your recipes in zip format, then upload the .zip file below."
|
"description-long": "Mealie 可从 Recipe Keeper 导入食谱。请将您的食谱导出为 zip 格式,再上传下方的 .zip 文件。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"new-recipe": {
|
"new-recipe": {
|
||||||
|
@ -526,7 +526,7 @@
|
||||||
"sugar-content": "糖",
|
"sugar-content": "糖",
|
||||||
"title": "标题",
|
"title": "标题",
|
||||||
"total-time": "总时间",
|
"total-time": "总时间",
|
||||||
"trans-fat-content": "Trans-fat",
|
"trans-fat-content": "反式脂肪",
|
||||||
"unable-to-delete-recipe": "无法删除食谱",
|
"unable-to-delete-recipe": "无法删除食谱",
|
||||||
"unsaturated-fat-content": "不饱和脂肪",
|
"unsaturated-fat-content": "不饱和脂肪",
|
||||||
"no-recipe": "没有食谱",
|
"no-recipe": "没有食谱",
|
||||||
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "我做了这道菜",
|
"made-this": "我做了这道菜",
|
||||||
"how-did-it-turn-out": "成品怎么样?",
|
"how-did-it-turn-out": "成品怎么样?",
|
||||||
"user-made-this": "{user}做了",
|
"user-made-this": "{user}做了",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "食谱扩展是Mealie API的关键功能之一。它允许你在食谱中添加自定义JSON键值对,以供第三方程序使用。你可以利用这些键提供信息,实现更多功能,例如触发自动化,或转发自定义信息到指定的设备上。",
|
"api-extras-description": "食谱扩展是Mealie API的关键功能之一。它允许你在食谱中添加自定义JSON键值对,以供第三方程序使用。你可以利用这些键提供信息,实现更多功能,例如触发自动化,或转发自定义信息到指定的设备上。",
|
||||||
"message-key": "键名",
|
"message-key": "键名",
|
||||||
"parse": "自动解析",
|
"parse": "自动解析",
|
||||||
|
@ -598,7 +602,7 @@
|
||||||
"import-with-zip": "使用 .zip 导入",
|
"import-with-zip": "使用 .zip 导入",
|
||||||
"create-recipe-from-an-image": "Create Recipe from an Image",
|
"create-recipe-from-an-image": "Create Recipe from an Image",
|
||||||
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
|
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
|
||||||
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.",
|
"crop-and-rotate-the-image": "裁剪并旋转图片,使仅文字可见且方向正确。",
|
||||||
"create-from-images": "从图片创建",
|
"create-from-images": "从图片创建",
|
||||||
"should-translate-description": "翻译该食谱",
|
"should-translate-description": "翻译该食谱",
|
||||||
"please-wait-image-procesing": "请稍等,正在处理图片。这可能需要一些时间。",
|
"please-wait-image-procesing": "请稍等,正在处理图片。这可能需要一些时间。",
|
||||||
|
@ -617,10 +621,10 @@
|
||||||
"stay-in-edit-mode": "留在编辑模式",
|
"stay-in-edit-mode": "留在编辑模式",
|
||||||
"import-from-zip": "从Zip压缩包导入",
|
"import-from-zip": "从Zip压缩包导入",
|
||||||
"import-from-zip-description": "导入从另一个Mealie应用导出的单个食谱。",
|
"import-from-zip-description": "导入从另一个Mealie应用导出的单个食谱。",
|
||||||
"import-from-html-or-json": "Import from HTML or JSON",
|
"import-from-html-or-json": "从 HTML 或 JSON 导入",
|
||||||
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.",
|
"import-from-html-or-json-description": "从原始 HTML 或 JSON 导入单个食谱。如果您有来自 Mealie 无法正常抓取的网站的食谱,或来自其他外部来源的食谱,此功能会很有用。",
|
||||||
"json-import-format-description-colon": "To import via JSON, it must be in valid format:",
|
"json-import-format-description-colon": "若要通过 JSON 导入,文件必须采用有效的格式:",
|
||||||
"json-editor": "JSON Editor",
|
"json-editor": "JSON 编辑器",
|
||||||
"zip-files-must-have-been-exported-from-mealie": "必须是由Mealie导出的zip文件才有效",
|
"zip-files-must-have-been-exported-from-mealie": "必须是由Mealie导出的zip文件才有效",
|
||||||
"create-a-recipe-by-uploading-a-scan": "通过上传扫描图创建食谱。",
|
"create-a-recipe-by-uploading-a-scan": "通过上传扫描图创建食谱。",
|
||||||
"upload-a-png-image-from-a-recipe-book": "上传一张PNG格式的纸质食谱照片",
|
"upload-a-png-image-from-a-recipe-book": "上传一张PNG格式的纸质食谱照片",
|
||||||
|
@ -633,11 +637,11 @@
|
||||||
"report-deletion-failed": "删除报告失败",
|
"report-deletion-failed": "删除报告失败",
|
||||||
"recipe-debugger": "食谱调试器",
|
"recipe-debugger": "食谱调试器",
|
||||||
"recipe-debugger-description": "抓取你想要的食谱的URL并粘贴在此。食谱刮削器将尝试刮削该URL并显示结果。如果你没看到任何返回数据,则说明对应的网站不支持Mealie或它的刮削库。",
|
"recipe-debugger-description": "抓取你想要的食谱的URL并粘贴在此。食谱刮削器将尝试刮削该URL并显示结果。如果你没看到任何返回数据,则说明对应的网站不支持Mealie或它的刮削库。",
|
||||||
"use-openai": "Use OpenAI",
|
"use-openai": "使用OpenAI",
|
||||||
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
|
"recipe-debugger-use-openai-description": "使用 OpenAI 解析结果,而非依赖抓取库。通过网址创建食谱时,若抓取库运行失败,系统会自动调用此功能,但您也可在此处手动测试。",
|
||||||
"debug": "调试",
|
"debug": "调试",
|
||||||
"tree-view": "树状图",
|
"tree-view": "树状图",
|
||||||
"recipe-servings": "Recipe Servings",
|
"recipe-servings": "食谱份量",
|
||||||
"recipe-yield": "食谱菜量",
|
"recipe-yield": "食谱菜量",
|
||||||
"recipe-yield-text": "食谱菜量描述",
|
"recipe-yield-text": "食谱菜量描述",
|
||||||
"unit": "单位",
|
"unit": "单位",
|
||||||
|
@ -653,14 +657,14 @@
|
||||||
"select-parser": "选取解析器",
|
"select-parser": "选取解析器",
|
||||||
"natural-language-processor": "自然语言处理器",
|
"natural-language-processor": "自然语言处理器",
|
||||||
"brute-parser": "暴力解析器",
|
"brute-parser": "暴力解析器",
|
||||||
"openai-parser": "OpenAI Parser",
|
"openai-parser": "OpenAI 解析器",
|
||||||
"parse-all": "全部解析",
|
"parse-all": "全部解析",
|
||||||
"no-unit": "没有计量单位",
|
"no-unit": "没有计量单位",
|
||||||
"missing-unit": "创建缺失的计量单位:{unit}",
|
"missing-unit": "创建缺失的计量单位:{unit}",
|
||||||
"missing-food": "创建缺失的食物:{food}",
|
"missing-food": "创建缺失的食物:{food}",
|
||||||
"no-food": "没有食物"
|
"no-food": "没有食物"
|
||||||
},
|
},
|
||||||
"reset-servings-count": "Reset Servings Count",
|
"reset-servings-count": "重置份量数量",
|
||||||
"not-linked-ingredients": "Additional Ingredients",
|
"not-linked-ingredients": "Additional Ingredients",
|
||||||
"upload-another-image": "Upload another image",
|
"upload-another-image": "Upload another image",
|
||||||
"upload-images": "Upload images",
|
"upload-images": "Upload images",
|
||||||
|
|
|
@ -579,6 +579,10 @@
|
||||||
"made-this": "I Made This",
|
"made-this": "I Made This",
|
||||||
"how-did-it-turn-out": "How did it turn out?",
|
"how-did-it-turn-out": "How did it turn out?",
|
||||||
"user-made-this": "{user} made this",
|
"user-made-this": "{user} made this",
|
||||||
|
"added-to-timeline": "Added to timeline",
|
||||||
|
"failed-to-add-to-timeline": "Failed to add to timeline",
|
||||||
|
"failed-to-update-recipe": "Failed to update recipe",
|
||||||
|
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image",
|
||||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||||
"message-key": "Message Key",
|
"message-key": "Message Key",
|
||||||
"parse": "Parse",
|
"parse": "Parse",
|
||||||
|
|
|
@ -13,7 +13,7 @@ export class GroupRecipeActionsAPI extends BaseCRUDAPI<CreateGroupRecipeAction,
|
||||||
baseRoute = routes.groupRecipeActions;
|
baseRoute = routes.groupRecipeActions;
|
||||||
itemRoute = routes.groupRecipeActionsId;
|
itemRoute = routes.groupRecipeActionsId;
|
||||||
|
|
||||||
async triggerAction(id: string | number, recipeSlug: string, scaledAmount: number) {
|
async triggerAction(id: string | number, recipeSlug: string, recipeScale: number) {
|
||||||
return await this.requests.post(routes.groupRecipeActionsIdTriggerRecipeSlug(id, recipeSlug), { scaledAmount });
|
return await this.requests.post(routes.groupRecipeActionsIdTriggerRecipeSlug(id, recipeSlug), { recipe_scale: recipeScale });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,10 @@
|
||||||
{{ $t("recipe.group-global-timeline", { groupName }) }}
|
{{ $t("recipe.group-global-timeline", { groupName }) }}
|
||||||
</template>
|
</template>
|
||||||
</BasePageTitle>
|
</BasePageTitle>
|
||||||
<v-sheet :class="$vuetify.display.smAndDown ? 'pa-0' : 'px-3 py-0'">
|
<v-sheet
|
||||||
|
:class="$vuetify.display.smAndDown ? 'pa-0' : 'px-3 py-0'"
|
||||||
|
style="background-color: transparent;"
|
||||||
|
>
|
||||||
<RecipeTimeline
|
<RecipeTimeline
|
||||||
v-if="queryFilter"
|
v-if="queryFilter"
|
||||||
v-model="ready"
|
v-model="ready"
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
:title="$t('general.confirm')"
|
:title="$t('general.confirm')"
|
||||||
:icon="$globals.icons.alertCircle"
|
:icon="$globals.icons.alertCircle"
|
||||||
color="error"
|
color="error"
|
||||||
|
can-confirm
|
||||||
@confirm="deleteSelected"
|
@confirm="deleteSelected"
|
||||||
>
|
>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
:title="$t('general.confirm')"
|
:title="$t('general.confirm')"
|
||||||
:icon="$globals.icons.alertCircle"
|
:icon="$globals.icons.alertCircle"
|
||||||
color="error"
|
color="error"
|
||||||
|
can-confirm
|
||||||
@confirm="deleteSelected"
|
@confirm="deleteSelected"
|
||||||
>
|
>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
|
|
|
@ -4487,8 +4487,8 @@
|
||||||
"chicken quarter": {
|
"chicken quarter": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chicken quarter",
|
"name": "Hähnchenschenkel",
|
||||||
"plural_name": "chicken quarters"
|
"plural_name": "Hähnchenschenkel"
|
||||||
},
|
},
|
||||||
"ground turkey sausage": {
|
"ground turkey sausage": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -4505,8 +4505,8 @@
|
||||||
"smoked turkey sausage": {
|
"smoked turkey sausage": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "smoked turkey sausage",
|
"name": "Geräucherte Putenwurst",
|
||||||
"plural_name": "smoked turkey sausages"
|
"plural_name": "Geräucherte Putenwürste"
|
||||||
},
|
},
|
||||||
"smoked chicken": {
|
"smoked chicken": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -4680,7 +4680,7 @@
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "geräucherte Entenbrust",
|
"name": "geräucherte Entenbrust",
|
||||||
"plural_name": "smoked duck breasts"
|
"plural_name": "geräucherte Entenbrüste"
|
||||||
},
|
},
|
||||||
"pigeon": {
|
"pigeon": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -4691,8 +4691,8 @@
|
||||||
"wild game bird": {
|
"wild game bird": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "wild game bird",
|
"name": "Wildgeflügel",
|
||||||
"plural_name": "wild game birds"
|
"plural_name": "Wildgeflügel"
|
||||||
},
|
},
|
||||||
"turkey liver": {
|
"turkey liver": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -4739,7 +4739,7 @@
|
||||||
"smoked turkey wing": {
|
"smoked turkey wing": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "smoked turkey wing",
|
"name": "geräucherte Putenflügel",
|
||||||
"plural_name": "smoked turkey wings"
|
"plural_name": "smoked turkey wings"
|
||||||
},
|
},
|
||||||
"chicken curry-cut": {
|
"chicken curry-cut": {
|
||||||
|
@ -4817,14 +4817,14 @@
|
||||||
"chicken kebab": {
|
"chicken kebab": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chicken kebab",
|
"name": "Hühnerkebab",
|
||||||
"plural_name": "chicken kebabs"
|
"plural_name": "chicken kebabs"
|
||||||
},
|
},
|
||||||
"chicken ham": {
|
"chicken ham": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chicken ham",
|
"name": "Hühnerschinken",
|
||||||
"plural_name": "chicken hams"
|
"plural_name": "Hühnerschinken"
|
||||||
},
|
},
|
||||||
"duck neck": {
|
"duck neck": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -6197,8 +6197,8 @@
|
||||||
"mace": {
|
"mace": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "mace",
|
"name": "Macis",
|
||||||
"plural_name": "maces"
|
"plural_name": "Macis"
|
||||||
},
|
},
|
||||||
"mango powder": {
|
"mango powder": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -11156,8 +11156,8 @@
|
||||||
"champagne vinegar": {
|
"champagne vinegar": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "champagne vinegar",
|
"name": "Champagneressig",
|
||||||
"plural_name": "champagne vinegars"
|
"plural_name": "Champagneressige"
|
||||||
},
|
},
|
||||||
"vinaigrette dressing": {
|
"vinaigrette dressing": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -11318,8 +11318,8 @@
|
||||||
"champagne vinaigrette": {
|
"champagne vinaigrette": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "champagne vinaigrette",
|
"name": "Champagner-Vinaigrette",
|
||||||
"plural_name": "champagne vinaigrettes"
|
"plural_name": "Champagner-Vinaigrettes"
|
||||||
},
|
},
|
||||||
"sun-dried tomato vinaigrette": {
|
"sun-dried tomato vinaigrette": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -11940,8 +11940,8 @@
|
||||||
"chamoy": {
|
"chamoy": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chamoy",
|
"name": "Chamoy",
|
||||||
"plural_name": "chamoys"
|
"plural_name": "Chamoys"
|
||||||
},
|
},
|
||||||
"lime pickle": {
|
"lime pickle": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -13276,8 +13276,8 @@
|
||||||
"nuoc cham": {
|
"nuoc cham": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "nuoc cham",
|
"name": "Nuoc Cham",
|
||||||
"plural_name": "nuoc chams"
|
"plural_name": "Nuoc Chams"
|
||||||
},
|
},
|
||||||
"white clam sauce": {
|
"white clam sauce": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -13640,8 +13640,8 @@
|
||||||
"ham stock": {
|
"ham stock": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "ham stock",
|
"name": "Schinkenbrühe",
|
||||||
"plural_name": "ham stocks"
|
"plural_name": "Schinkenbrühen"
|
||||||
},
|
},
|
||||||
"lentil soup": {
|
"lentil soup": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -15407,8 +15407,8 @@
|
||||||
"chamomile tea": {
|
"chamomile tea": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chamomile tea",
|
"name": "Kamillentee",
|
||||||
"plural_name": "chamomile teas"
|
"plural_name": "Kamillentees"
|
||||||
},
|
},
|
||||||
"pear juice": {
|
"pear juice": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -16245,8 +16245,8 @@
|
||||||
"champagne yeast": {
|
"champagne yeast": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "champagne yeast",
|
"name": "Champagnerhefe",
|
||||||
"plural_name": "champagne yeasts"
|
"plural_name": "Champagnerhefen"
|
||||||
},
|
},
|
||||||
"maqui": {
|
"maqui": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
"bell pepper": {
|
"bell pepper": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "bell pepper",
|
"name": "στρογγυλή πιπεριά",
|
||||||
"plural_name": "bell peppers"
|
"plural_name": "στρογγυλές πιπεριές"
|
||||||
},
|
},
|
||||||
"carrot": {
|
"carrot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -168,20 +168,20 @@
|
||||||
"arugula": {
|
"arugula": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "arugula",
|
"name": "ρόκα",
|
||||||
"plural_name": "arugulas"
|
"plural_name": "ρόκα"
|
||||||
},
|
},
|
||||||
"leek": {
|
"leek": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "leek",
|
"name": "πράσο",
|
||||||
"plural_name": "leeks"
|
"plural_name": "πράσα"
|
||||||
},
|
},
|
||||||
"eggplant": {
|
"eggplant": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "eggplant",
|
"name": "μελιτζάνα",
|
||||||
"plural_name": "eggplants"
|
"plural_name": "μελιτζάνες"
|
||||||
},
|
},
|
||||||
"lettuce": {
|
"lettuce": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -198,8 +198,8 @@
|
||||||
"romaine": {
|
"romaine": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "romaine",
|
"name": "μαρούλι",
|
||||||
"plural_name": "romaines"
|
"plural_name": "μαρούλια"
|
||||||
},
|
},
|
||||||
"beetroot": {
|
"beetroot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -210,8 +210,8 @@
|
||||||
"brussels sprout": {
|
"brussels sprout": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "brussels sprout",
|
"name": "λαχανάκι Βρυξελλών",
|
||||||
"plural_name": "brussels sprouts"
|
"plural_name": "λαχανάκια Βρυξελλών"
|
||||||
},
|
},
|
||||||
"fennel": {
|
"fennel": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -222,8 +222,8 @@
|
||||||
"sun dried tomato": {
|
"sun dried tomato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "sun dried tomato",
|
"name": "αποξηραμένη ντομάτα",
|
||||||
"plural_name": "sun dried tomatoes"
|
"plural_name": "αποξηραμένες ντομάτες"
|
||||||
},
|
},
|
||||||
"radish": {
|
"radish": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -628,93 +628,93 @@
|
||||||
"foods": {
|
"foods": {
|
||||||
"tomato": {
|
"tomato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "Yes they are a fruit",
|
"description": "Σωστά, είναι φρούτο",
|
||||||
"name": "tomato",
|
"name": "ντομάτα",
|
||||||
"plural_name": "tomatoes"
|
"plural_name": "ντομάτες"
|
||||||
},
|
},
|
||||||
"lemon": {
|
"lemon": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "lemon",
|
"name": "λεμόνι",
|
||||||
"plural_name": "lemons"
|
"plural_name": "λεμόνια"
|
||||||
},
|
},
|
||||||
"lime": {
|
"lime": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "lime",
|
"name": "λάιμ",
|
||||||
"plural_name": "limes"
|
"plural_name": "λάιμ"
|
||||||
},
|
},
|
||||||
"apple": {
|
"apple": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "apple",
|
"name": "μήλο",
|
||||||
"plural_name": "μήλα"
|
"plural_name": "μήλα"
|
||||||
},
|
},
|
||||||
"banana": {
|
"banana": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "banana",
|
"name": "μπανάνα",
|
||||||
"plural_name": "bananas"
|
"plural_name": "μπανάνες"
|
||||||
},
|
},
|
||||||
"orange": {
|
"orange": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "orange",
|
"name": "πορτοκάλι",
|
||||||
"plural_name": "oranges"
|
"plural_name": "πορτοκάλια"
|
||||||
},
|
},
|
||||||
"raisin": {
|
"raisin": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "raisin",
|
"name": "σταφίδα",
|
||||||
"plural_name": "raisins"
|
"plural_name": "σταφίδες"
|
||||||
},
|
},
|
||||||
"pineapple": {
|
"pineapple": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "pineapple",
|
"name": "ανανάς",
|
||||||
"plural_name": "pineapples"
|
"plural_name": "ανανάδες"
|
||||||
},
|
},
|
||||||
"mango": {
|
"mango": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "mango",
|
"name": "μάνγκο",
|
||||||
"plural_name": "mangoes"
|
"plural_name": "μάνγκο"
|
||||||
},
|
},
|
||||||
"peach": {
|
"peach": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "peach",
|
"name": "ροδάκινο",
|
||||||
"plural_name": "peaches"
|
"plural_name": "ροδάκινα"
|
||||||
},
|
},
|
||||||
"date": {
|
"date": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "date",
|
"name": "χουρμάς",
|
||||||
"plural_name": "dates"
|
"plural_name": "χουρμάδες"
|
||||||
},
|
},
|
||||||
"coconut": {
|
"coconut": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "coconut",
|
"name": "καρύδα",
|
||||||
"plural_name": "coconuts"
|
"plural_name": "καρύδες"
|
||||||
},
|
},
|
||||||
"craisin": {
|
"craisin": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "craisin",
|
"name": "αποξηραμένο κράνμπερι",
|
||||||
"plural_name": "craisins"
|
"plural_name": "αποξηραμένα κράνμπερι"
|
||||||
},
|
},
|
||||||
"pear": {
|
"pear": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "pear",
|
"name": "αχλάδι",
|
||||||
"plural_name": "pears"
|
"plural_name": "αχλάδια"
|
||||||
},
|
},
|
||||||
"grape": {
|
"grape": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "grape",
|
"name": "σταφύλι",
|
||||||
"plural_name": "grapes"
|
"plural_name": "σταφύλια"
|
||||||
},
|
},
|
||||||
"pomegranate": {
|
"pomegranate": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -725,8 +725,8 @@
|
||||||
"watermelon": {
|
"watermelon": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "watermelon",
|
"name": "καρπούζι",
|
||||||
"plural_name": "watermelons"
|
"plural_name": "καρπούζια"
|
||||||
},
|
},
|
||||||
"rhubarb": {
|
"rhubarb": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -743,8 +743,8 @@
|
||||||
"kiwi": {
|
"kiwi": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "kiwi",
|
"name": "ακτινίδιο",
|
||||||
"plural_name": "kiwis"
|
"plural_name": "ακτινίδια"
|
||||||
},
|
},
|
||||||
"grapefruit": {
|
"grapefruit": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -821,8 +821,8 @@
|
||||||
"nectarine": {
|
"nectarine": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "nectarine",
|
"name": "νεκταρίνι",
|
||||||
"plural_name": "nectarines"
|
"plural_name": "νεκταρίνια"
|
||||||
},
|
},
|
||||||
"dried fig": {
|
"dried fig": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|
|
@ -132,8 +132,8 @@
|
||||||
"baby green": {
|
"baby green": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "baby green",
|
"name": "jeûne pousse",
|
||||||
"plural_name": "baby greens"
|
"plural_name": "jeûne pousses"
|
||||||
},
|
},
|
||||||
"pumpkin": {
|
"pumpkin": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -198,8 +198,8 @@
|
||||||
"romaine": {
|
"romaine": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "romaine",
|
"name": "laitue romaine",
|
||||||
"plural_name": "romaines"
|
"plural_name": "laitues romaines"
|
||||||
},
|
},
|
||||||
"beetroot": {
|
"beetroot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -280,7 +280,7 @@
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "mélange de légumes",
|
"name": "mélange de légumes",
|
||||||
"plural_name": "mixed vegetables"
|
"plural_name": "mélange de légumes"
|
||||||
},
|
},
|
||||||
"poblano pepper": {
|
"poblano pepper": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -315,14 +315,14 @@
|
||||||
"watercress": {
|
"watercress": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "watercress",
|
"name": "cresson",
|
||||||
"plural_name": "watercress"
|
"plural_name": "watercress"
|
||||||
},
|
},
|
||||||
"iceberg": {
|
"iceberg": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "iceberg",
|
"name": "laitue iceberg",
|
||||||
"plural_name": "icebergs"
|
"plural_name": "laitues iceberg"
|
||||||
},
|
},
|
||||||
"mashed potato": {
|
"mashed potato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -345,14 +345,14 @@
|
||||||
"pimiento": {
|
"pimiento": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "pimiento",
|
"name": "piment",
|
||||||
"plural_name": "pimientoes"
|
"plural_name": "piments"
|
||||||
},
|
},
|
||||||
"spaghetti squash": {
|
"spaghetti squash": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "spaghetti squash",
|
"name": "courge spaghetti",
|
||||||
"plural_name": "spaghetti squashes"
|
"plural_name": "courges spaghettis"
|
||||||
},
|
},
|
||||||
"butter lettuce": {
|
"butter lettuce": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -499,8 +499,8 @@
|
||||||
"french-fried onion": {
|
"french-fried onion": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "french-fried onion",
|
"name": "oignons frits",
|
||||||
"plural_name": "french-fried onions"
|
"plural_name": "oignons frits"
|
||||||
},
|
},
|
||||||
"daikon": {
|
"daikon": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -559,8 +559,8 @@
|
||||||
"kohlrabi": {
|
"kohlrabi": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "kohlrabi",
|
"name": "chou-rave",
|
||||||
"plural_name": "kohlrabis"
|
"plural_name": "choux-rave"
|
||||||
},
|
},
|
||||||
"fresno chile": {
|
"fresno chile": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -14515,8 +14515,8 @@
|
||||||
"rum": {
|
"rum": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "rum",
|
"name": "rhum",
|
||||||
"plural_name": "rums"
|
"plural_name": "rhums"
|
||||||
},
|
},
|
||||||
"vodka": {
|
"vodka": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -14581,8 +14581,8 @@
|
||||||
"white rum": {
|
"white rum": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "white rum",
|
"name": "rhum blanc",
|
||||||
"plural_name": "white rums"
|
"plural_name": "rhums blancs"
|
||||||
},
|
},
|
||||||
"coffee liqueur": {
|
"coffee liqueur": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1425,20 +1425,20 @@
|
||||||
"honey fungu": {
|
"honey fungu": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "honey fungu",
|
"name": "honingzwam",
|
||||||
"plural_name": "honey fungus"
|
"plural_name": "honingzwammen"
|
||||||
},
|
},
|
||||||
"caesar's mushroom": {
|
"caesar's mushroom": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "caesar's mushroom",
|
"name": "keizersamaniet",
|
||||||
"plural_name": "caesar's mushrooms"
|
"plural_name": "keizersamanieten"
|
||||||
},
|
},
|
||||||
"candy cap mushroom": {
|
"candy cap mushroom": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "candy cap mushroom",
|
"name": "kruidige melkzwam",
|
||||||
"plural_name": "candy cap mushrooms"
|
"plural_name": "kruidige melkzwammen"
|
||||||
},
|
},
|
||||||
"lion’s mane mushroom": {
|
"lion’s mane mushroom": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -1579,7 +1579,7 @@
|
||||||
"amla": {
|
"amla": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "amla",
|
"name": "Indiase kruisbes",
|
||||||
"plural_name": "indiase kruisbessen"
|
"plural_name": "indiase kruisbessen"
|
||||||
},
|
},
|
||||||
"elderberry": {
|
"elderberry": {
|
||||||
|
@ -1597,8 +1597,8 @@
|
||||||
"huckleberry": {
|
"huckleberry": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "huckleberry",
|
"name": "bosbes",
|
||||||
"plural_name": "huckleberries"
|
"plural_name": "bosbessen"
|
||||||
},
|
},
|
||||||
"dried elderberry": {
|
"dried elderberry": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -1823,8 +1823,8 @@
|
||||||
"hemp heart": {
|
"hemp heart": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "hemp heart",
|
"name": "gepeld hennepzaad",
|
||||||
"plural_name": "hemp hearts"
|
"plural_name": "gepelde hennepzaden"
|
||||||
},
|
},
|
||||||
"nigella seed": {
|
"nigella seed": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -1859,8 +1859,8 @@
|
||||||
"watermelon seed": {
|
"watermelon seed": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "watermelon seed",
|
"name": "watermeloen pit",
|
||||||
"plural_name": "watermelon seeds"
|
"plural_name": "watermeloen pitten"
|
||||||
},
|
},
|
||||||
"honey-roasted peanut": {
|
"honey-roasted peanut": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -1913,8 +1913,8 @@
|
||||||
"jackfruit seed": {
|
"jackfruit seed": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "jackfruit seed",
|
"name": "jackfruit zaad",
|
||||||
"plural_name": "jackfruit seeds"
|
"plural_name": "jackfruit zaden"
|
||||||
},
|
},
|
||||||
"honey-roasted almond": {
|
"honey-roasted almond": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -2183,8 +2183,8 @@
|
||||||
"smoked cheese": {
|
"smoked cheese": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "smoked cheese",
|
"name": "gerookte kaas",
|
||||||
"plural_name": "smoked cheeses"
|
"plural_name": "gerookte kazen"
|
||||||
},
|
},
|
||||||
"halloumi": {
|
"halloumi": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -2453,20 +2453,20 @@
|
||||||
"hard goat cheese": {
|
"hard goat cheese": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "hard goat cheese",
|
"name": "harde geiten kaas",
|
||||||
"plural_name": "hard goat cheeses"
|
"plural_name": "harde geiten kazen"
|
||||||
},
|
},
|
||||||
"kashkaval": {
|
"kashkaval": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "kashkaval",
|
"name": "kashkaval",
|
||||||
"plural_name": "kashkavals"
|
"plural_name": "schapen kaas"
|
||||||
},
|
},
|
||||||
"sheep cheese": {
|
"sheep cheese": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "sheep cheese",
|
"name": "schapen kaas",
|
||||||
"plural_name": "sheep cheeses"
|
"plural_name": "schapen kazen"
|
||||||
},
|
},
|
||||||
"amul cheese": {
|
"amul cheese": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -2643,8 +2643,8 @@
|
||||||
"buttermilk": {
|
"buttermilk": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "buttermilk",
|
"name": "karnemelk",
|
||||||
"plural_name": "buttermilks"
|
"plural_name": "karnemelk"
|
||||||
},
|
},
|
||||||
"yogurt": {
|
"yogurt": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -2672,7 +2672,7 @@
|
||||||
},
|
},
|
||||||
"ghee": {
|
"ghee": {
|
||||||
"aliases": [
|
"aliases": [
|
||||||
"clarified butter"
|
"geklaarde boter"
|
||||||
],
|
],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "ghee",
|
"name": "ghee",
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "hvitløk",
|
"name": "hvitløk",
|
||||||
"plural_name": "garlics"
|
"plural_name": "hvitløk"
|
||||||
},
|
},
|
||||||
"onion": {
|
"onion": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -16,26 +16,26 @@
|
||||||
"bell pepper": {
|
"bell pepper": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "bell pepper",
|
"name": "paprika",
|
||||||
"plural_name": "bell peppers"
|
"plural_name": "paprikaer"
|
||||||
},
|
},
|
||||||
"carrot": {
|
"carrot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "gulrot",
|
"name": "gulrot",
|
||||||
"plural_name": "gulroter"
|
"plural_name": "gulrøtter"
|
||||||
},
|
},
|
||||||
"scallion": {
|
"scallion": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "scallion",
|
"name": "vårløk",
|
||||||
"plural_name": "scallions"
|
"plural_name": "vårløk"
|
||||||
},
|
},
|
||||||
"zucchini": {
|
"zucchini": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "zucchini",
|
"name": "squash",
|
||||||
"plural_name": "zucchinis"
|
"plural_name": "squash"
|
||||||
},
|
},
|
||||||
"potato": {
|
"potato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -52,20 +52,20 @@
|
||||||
"yellow onion": {
|
"yellow onion": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "yellow onion",
|
"name": "gul løk",
|
||||||
"plural_name": "yellow onions"
|
"plural_name": "gul løk"
|
||||||
},
|
},
|
||||||
"celery": {
|
"celery": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "seleri",
|
"name": "selleri",
|
||||||
"plural_name": "selerier"
|
"plural_name": "sellerier"
|
||||||
},
|
},
|
||||||
"jalapeno": {
|
"jalapeno": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "jalapeno",
|
"name": "jalapeño",
|
||||||
"plural_name": "jalapenoes"
|
"plural_name": "jalapenoer"
|
||||||
},
|
},
|
||||||
"avocado": {
|
"avocado": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -82,8 +82,8 @@
|
||||||
"cherry tomato": {
|
"cherry tomato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "cherry tomato",
|
"name": "cherrytomat",
|
||||||
"plural_name": "cherry tomatoes"
|
"plural_name": "cherrytomater"
|
||||||
},
|
},
|
||||||
"cucumber": {
|
"cucumber": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -95,39 +95,39 @@
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "spinat",
|
"name": "spinat",
|
||||||
"plural_name": "spinaches"
|
"plural_name": "spinat"
|
||||||
},
|
},
|
||||||
"sweet corn": {
|
"sweet corn": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "sweet corn",
|
"name": "søtmais",
|
||||||
"plural_name": "sweet corns"
|
"plural_name": "søtmais"
|
||||||
},
|
},
|
||||||
"chile pepper": {
|
"chile pepper": {
|
||||||
"aliases": [
|
"aliases": [
|
||||||
"chilipepper"
|
"chilipepper"
|
||||||
],
|
],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "chile pepper",
|
"name": "chilipepper",
|
||||||
"plural_name": "chile peppers"
|
"plural_name": "chilipepper"
|
||||||
},
|
},
|
||||||
"sweet potato": {
|
"sweet potato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "søtpotet",
|
"name": "søtpotet",
|
||||||
"plural_name": "sweet potatoes"
|
"plural_name": "søtpoteter"
|
||||||
},
|
},
|
||||||
"broccoli": {
|
"broccoli": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "brokkoli",
|
"name": "brokkoli",
|
||||||
"plural_name": "broccolis"
|
"plural_name": "brokkoli"
|
||||||
},
|
},
|
||||||
"heart of palm": {
|
"heart of palm": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "heart of palm",
|
"name": "palmehjerte",
|
||||||
"plural_name": "heart of palms"
|
"plural_name": "palmehjerte"
|
||||||
},
|
},
|
||||||
"baby green": {
|
"baby green": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -139,61 +139,61 @@
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "gresskar",
|
"name": "gresskar",
|
||||||
"plural_name": "pumpkins"
|
"plural_name": "gresskar"
|
||||||
},
|
},
|
||||||
"cauliflower": {
|
"cauliflower": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "blomkål",
|
"name": "blomkål",
|
||||||
"plural_name": "cauliflowers"
|
"plural_name": "blomkål"
|
||||||
},
|
},
|
||||||
"cabbage": {
|
"cabbage": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "kål",
|
"name": "kål",
|
||||||
"plural_name": "cabbages"
|
"plural_name": "kål"
|
||||||
},
|
},
|
||||||
"asparagu": {
|
"asparagu": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "asparagu",
|
"name": "asparges",
|
||||||
"plural_name": "asparagus"
|
"plural_name": "asparges"
|
||||||
},
|
},
|
||||||
"kale": {
|
"kale": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "kale",
|
"name": "grønnkål",
|
||||||
"plural_name": "kales"
|
"plural_name": "grønnkål"
|
||||||
},
|
},
|
||||||
"arugula": {
|
"arugula": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "arugula",
|
"name": "ruccola",
|
||||||
"plural_name": "arugulas"
|
"plural_name": "ruccola"
|
||||||
},
|
},
|
||||||
"leek": {
|
"leek": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "leek",
|
"name": "purre",
|
||||||
"plural_name": "leeks"
|
"plural_name": "purre"
|
||||||
},
|
},
|
||||||
"eggplant": {
|
"eggplant": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "aubergine",
|
"name": "aubergine",
|
||||||
"plural_name": "eggplants"
|
"plural_name": "auberginer"
|
||||||
},
|
},
|
||||||
"lettuce": {
|
"lettuce": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "salat",
|
"name": "salat",
|
||||||
"plural_name": "lettuces"
|
"plural_name": "salater"
|
||||||
},
|
},
|
||||||
"butternut squash": {
|
"butternut squash": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "butternut squash",
|
"name": "butternut squash",
|
||||||
"plural_name": "butternut squashes"
|
"plural_name": "butternut squash"
|
||||||
},
|
},
|
||||||
"romaine": {
|
"romaine": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
@ -204,50 +204,50 @@
|
||||||
"beetroot": {
|
"beetroot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "beetroot",
|
"name": "rødbete",
|
||||||
"plural_name": "beetroots"
|
"plural_name": "rødbeter"
|
||||||
},
|
},
|
||||||
"brussels sprout": {
|
"brussels sprout": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "brussels sprout",
|
"name": "rosenkål",
|
||||||
"plural_name": "brussels sprouts"
|
"plural_name": "rosenkål"
|
||||||
},
|
},
|
||||||
"fennel": {
|
"fennel": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "fennel",
|
"name": "fenikkel",
|
||||||
"plural_name": "fennels"
|
"plural_name": "fenikkel"
|
||||||
},
|
},
|
||||||
"sun dried tomato": {
|
"sun dried tomato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "sun dried tomato",
|
"name": "soltørket tomat",
|
||||||
"plural_name": "sun dried tomatoes"
|
"plural_name": "soltørket tomater"
|
||||||
},
|
},
|
||||||
"radish": {
|
"radish": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "radish",
|
"name": "reddik",
|
||||||
"plural_name": "reddiker"
|
"plural_name": "reddiker"
|
||||||
},
|
},
|
||||||
"red cabbage": {
|
"red cabbage": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "red cabbage",
|
"name": "rødkål",
|
||||||
"plural_name": "red cabbages"
|
"plural_name": "rødkål"
|
||||||
},
|
},
|
||||||
"artichoke": {
|
"artichoke": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "artichoke",
|
"name": "artisjokk",
|
||||||
"plural_name": "artichokes"
|
"plural_name": "artisjokker"
|
||||||
},
|
},
|
||||||
"new potato": {
|
"new potato": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "new potato",
|
"name": "nypotet",
|
||||||
"plural_name": "new potatoes"
|
"plural_name": "nypotet"
|
||||||
},
|
},
|
||||||
"summer squash": {
|
"summer squash": {
|
||||||
"aliases": [
|
"aliases": [
|
||||||
|
@ -267,20 +267,20 @@
|
||||||
"parsnip": {
|
"parsnip": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "parsnip",
|
"name": "pastinakk",
|
||||||
"plural_name": "parsnips"
|
"plural_name": "pastinakker"
|
||||||
},
|
},
|
||||||
"baby carrot": {
|
"baby carrot": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "baby carrot",
|
"name": "babygulrot",
|
||||||
"plural_name": "baby carrots"
|
"plural_name": "babygulrøtter"
|
||||||
},
|
},
|
||||||
"mixed vegetable": {
|
"mixed vegetable": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"description": "",
|
"description": "",
|
||||||
"name": "mixed vegetable",
|
"name": "blandet grønnsaker",
|
||||||
"plural_name": "mixed vegetables"
|
"plural_name": "blandet grønnsaker"
|
||||||
},
|
},
|
||||||
"poblano pepper": {
|
"poblano pepper": {
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -103,8 +103,8 @@
|
||||||
"abbreviation": ""
|
"abbreviation": ""
|
||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"name": "hoofd",
|
"name": "krop",
|
||||||
"plural_name": "hoofden",
|
"plural_name": "kroppen",
|
||||||
"description": "",
|
"description": "",
|
||||||
"abbreviation": ""
|
"abbreviation": ""
|
||||||
},
|
},
|
||||||
|
|
|
@ -69,7 +69,7 @@ class GroupRecipeActionController(BaseUserController):
|
||||||
|
|
||||||
@router.post("/{item_id}/trigger/{recipe_slug}", status_code=202)
|
@router.post("/{item_id}/trigger/{recipe_slug}", status_code=202)
|
||||||
def trigger_action(
|
def trigger_action(
|
||||||
self, item_id: UUID4, recipe_slug: str, bg_tasks: BackgroundTasks, scaled_amount: float = Body(1, embed=True)
|
self, item_id: UUID4, recipe_slug: str, bg_tasks: BackgroundTasks, recipe_scale: float = Body(1, embed=True)
|
||||||
) -> None:
|
) -> None:
|
||||||
recipe_action = self.repos.group_recipe_actions.get_one(item_id)
|
recipe_action = self.repos.group_recipe_actions.get_one(item_id)
|
||||||
if not recipe_action:
|
if not recipe_action:
|
||||||
|
@ -95,7 +95,7 @@ class GroupRecipeActionController(BaseUserController):
|
||||||
detail=ErrorResponse.respond(message="Not found."),
|
detail=ErrorResponse.respond(message="Not found."),
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
payload = GroupRecipeActionPayload(action=recipe_action, content=recipe, scaled_amount=scaled_amount)
|
payload = GroupRecipeActionPayload(action=recipe_action, content=recipe, recipe_scale=recipe_scale)
|
||||||
bg_tasks.add_task(
|
bg_tasks.add_task(
|
||||||
task_action,
|
task_action,
|
||||||
url=recipe_action.url,
|
url=recipe_action.url,
|
||||||
|
|
|
@ -10,7 +10,7 @@ from mealie.routes._base.mixins import HttpRepo
|
||||||
from mealie.schema import mapper
|
from mealie.schema import mapper
|
||||||
from mealie.schema.household.webhook import CreateWebhook, ReadWebhook, SaveWebhook, WebhookPagination
|
from mealie.schema.household.webhook import CreateWebhook, ReadWebhook, SaveWebhook, WebhookPagination
|
||||||
from mealie.schema.response.pagination import PaginationQuery
|
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"])
|
router = APIRouter(prefix="/households/webhooks", tags=["Households: Webhooks"])
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ class ReadWebhookController(BaseUserController):
|
||||||
@router.post("/{item_id}/test")
|
@router.post("/{item_id}/test")
|
||||||
def test_one(self, item_id: UUID4, bg_tasks: BackgroundTasks):
|
def test_one(self, item_id: UUID4, bg_tasks: BackgroundTasks):
|
||||||
webhook = self.mixins.get_one(item_id)
|
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)
|
@router.put("/{item_id}", response_model=ReadWebhook)
|
||||||
def update_one(self, item_id: UUID4, data: CreateWebhook):
|
def update_one(self, item_id: UUID4, data: CreateWebhook):
|
||||||
|
|
|
@ -44,4 +44,4 @@ class GroupRecipeActionPagination(PaginationBase):
|
||||||
class GroupRecipeActionPayload(MealieModel):
|
class GroupRecipeActionPayload(MealieModel):
|
||||||
action: GroupRecipeActionOut
|
action: GroupRecipeActionOut
|
||||||
content: Any
|
content: Any
|
||||||
scaled_amount: float
|
recipe_scale: float
|
||||||
|
|
|
@ -3,7 +3,6 @@ import json
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from collections.abc import Generator
|
from collections.abc import Generator
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime
|
||||||
from typing import cast
|
|
||||||
from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit
|
from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit
|
||||||
|
|
||||||
from fastapi.encoders import jsonable_encoder
|
from fastapi.encoders import jsonable_encoder
|
||||||
|
@ -148,14 +147,23 @@ class WebhookEventListener(EventListenerBase):
|
||||||
|
|
||||||
def publish_to_subscribers(self, event: Event, subscribers: list[ReadWebhook]) -> None:
|
def publish_to_subscribers(self, event: Event, subscribers: list[ReadWebhook]) -> None:
|
||||||
with self.ensure_repos(self.group_id, self.household_id) as repos:
|
with self.ensure_repos(self.group_id, self.household_id) as repos:
|
||||||
if event.document_data.document_type == EventDocumentType.mealplan:
|
if not isinstance(event.document_data, EventWebhookData):
|
||||||
webhook_data = cast(EventWebhookData, event.document_data)
|
return
|
||||||
|
|
||||||
|
match event.document_data.document_type:
|
||||||
|
case EventDocumentType.mealplan:
|
||||||
meal_repo = repos.meals
|
meal_repo = repos.meals
|
||||||
meal_data = meal_repo.get_meals_by_date_range(
|
meal_data = meal_repo.get_meals_by_date_range(
|
||||||
webhook_data.webhook_start_dt, webhook_data.webhook_end_dt
|
event.document_data.webhook_start_dt, event.document_data.webhook_end_dt
|
||||||
)
|
)
|
||||||
if meal_data:
|
event.document_data.webhook_body = meal_data or None
|
||||||
webhook_data.webhook_body = meal_data
|
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])
|
self.publisher.publish(event, [webhook.url for webhook in subscribers])
|
||||||
|
|
||||||
def get_scheduled_webhooks(self, start_dt: datetime, end_dt: datetime) -> list[ReadWebhook]:
|
def get_scheduled_webhooks(self, start_dt: datetime, end_dt: datetime) -> list[ReadWebhook]:
|
||||||
|
|
|
@ -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)
|
dt = datetime.min.replace(tzinfo=UTC)
|
||||||
event_type = EventTypes.webhook_task
|
event_type = EventTypes.test_message
|
||||||
|
|
||||||
event_document_data = EventWebhookData(
|
event_document_data = EventWebhookData(
|
||||||
document_type=EventDocumentType.mealplan,
|
document_type=EventDocumentType.generic,
|
||||||
operation=EventOperation.info,
|
operation=EventOperation.info,
|
||||||
webhook_start_dt=dt,
|
webhook_start_dt=dt,
|
||||||
webhook_end_dt=dt,
|
webhook_end_dt=dt,
|
||||||
|
|
370
poetry.lock
generated
370
poetry.lock
generated
|
@ -478,79 +478,100 @@ markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""}
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "coverage"
|
name = "coverage"
|
||||||
version = "7.9.2"
|
version = "7.10.1"
|
||||||
description = "Code coverage measurement for Python"
|
description = "Code coverage measurement for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.9"
|
python-versions = ">=3.9"
|
||||||
groups = ["dev"]
|
groups = ["dev"]
|
||||||
files = [
|
files = [
|
||||||
{file = "coverage-7.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:66283a192a14a3854b2e7f3418d7db05cdf411012ab7ff5db98ff3b181e1f912"},
|
{file = "coverage-7.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1c86eb388bbd609d15560e7cc0eb936c102b6f43f31cf3e58b4fd9afe28e1372"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e01d138540ef34fcf35c1aa24d06c3de2a4cffa349e29a10056544f35cca15f"},
|
{file = "coverage-7.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b4ba0f488c1bdb6bd9ba81da50715a372119785458831c73428a8566253b86b"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f22627c1fe2745ee98d3ab87679ca73a97e75ca75eb5faee48660d060875465f"},
|
{file = "coverage-7.10.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:083442ecf97d434f0cb3b3e3676584443182653da08b42e965326ba12d6b5f2a"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b1c2d8363247b46bd51f393f86c94096e64a1cf6906803fa8d5a9d03784bdbf"},
|
{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.9.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c10c882b114faf82dbd33e876d0cbd5e1d1ebc0d2a74ceef642c6152f3f4d547"},
|
{file = "coverage-7.10.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3beb76e20b28046989300c4ea81bf690df84ee98ade4dc0bbbf774a28eb98440"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de3c0378bdf7066c3988d66cd5232d161e933b87103b014ab1b0b4676098fa45"},
|
{file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bc265a7945e8d08da28999ad02b544963f813a00f3ed0a7a0ce4165fd77629f8"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1e2f097eae0e5991e7623958a24ced3282676c93c013dde41399ff63e230fcf2"},
|
{file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:47c91f32ba4ac46f1e224a7ebf3f98b4b24335bad16137737fe71a5961a0665c"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28dc1f67e83a14e7079b6cea4d314bc8b24d1aed42d3582ff89c0295f09b181e"},
|
{file = "coverage-7.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1a108dd78ed185020f66f131c60078f3fae3f61646c28c8bb4edd3fa121fc7fc"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-win32.whl", hash = "sha256:bf7d773da6af9e10dbddacbf4e5cab13d06d0ed93561d44dae0188a42c65be7e"},
|
{file = "coverage-7.10.1-cp310-cp310-win32.whl", hash = "sha256:7092cc82382e634075cc0255b0b69cb7cada7c1f249070ace6a95cb0f13548ef"},
|
||||||
{file = "coverage-7.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:0c0378ba787681ab1897f7c89b415bd56b0b2d9a47e5a3d8dc0ea55aac118d6c"},
|
{file = "coverage-7.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:ac0c5bba938879c2fc0bc6c1b47311b5ad1212a9dcb8b40fe2c8110239b7faed"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba"},
|
{file = "coverage-7.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b45e2f9d5b0b5c1977cb4feb5f594be60eb121106f8900348e29331f553a726f"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa"},
|
{file = "coverage-7.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a7a4d74cb0f5e3334f9aa26af7016ddb94fb4bfa11b4a573d8e98ecba8c34f1"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a"},
|
{file = "coverage-7.10.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d4b0aab55ad60ead26159ff12b538c85fbab731a5e3411c642b46c3525863437"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc"},
|
{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.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2"},
|
{file = "coverage-7.10.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa309df995d020f3438407081b51ff527171cca6772b33cf8f85344b8b4b8770"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c"},
|
{file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfb8b9d8855c8608f9747602a48ab525b1d320ecf0113994f6df23160af68262"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd"},
|
{file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:320d86da829b012982b414c7cdda65f5d358d63f764e0e4e54b33097646f39a3"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74"},
|
{file = "coverage-7.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dc60ddd483c556590da1d9482a4518292eec36dd0e1e8496966759a1f282bcd0"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6"},
|
{file = "coverage-7.10.1-cp311-cp311-win32.whl", hash = "sha256:4fcfe294f95b44e4754da5b58be750396f2b1caca8f9a0e78588e3ef85f8b8be"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7"},
|
{file = "coverage-7.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:efa23166da3fe2915f8ab452dde40319ac84dc357f635737174a08dbd912980c"},
|
||||||
{file = "coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62"},
|
{file = "coverage-7.10.1-cp311-cp311-win_arm64.whl", hash = "sha256:d12b15a8c3759e2bb580ffa423ae54be4f184cf23beffcbd641f4fe6e1584293"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0"},
|
{file = "coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3"},
|
{file = "coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1"},
|
{file = "coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615"},
|
{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.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b"},
|
{file = "coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9"},
|
{file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f"},
|
{file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d"},
|
{file = "coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355"},
|
{file = "coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0"},
|
{file = "coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3"},
|
||||||
{file = "coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b"},
|
{file = "coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038"},
|
{file = "coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d"},
|
{file = "coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3"},
|
{file = "coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14"},
|
{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.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6"},
|
{file = "coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b"},
|
{file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d"},
|
{file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868"},
|
{file = "coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a"},
|
{file = "coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b"},
|
{file = "coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694"},
|
{file = "coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5"},
|
{file = "coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b"},
|
{file = "coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3"},
|
{file = "coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8"},
|
{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.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46"},
|
{file = "coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584"},
|
{file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e"},
|
{file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac"},
|
{file = "coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926"},
|
{file = "coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd"},
|
{file = "coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18"},
|
||||||
{file = "coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb"},
|
{file = "coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddc39510ac922a5c4c27849b739f875d3e1d9e590d1e7b64c98dadf037a16cce"},
|
{file = "coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a535c0c7364acd55229749c2b3e5eebf141865de3a8f697076a3291985f02d30"},
|
{file = "coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df0f9ef28e0f20c767ccdccfc5ae5f83a6f4a2fbdfbcbcc8487a8a78771168c8"},
|
{file = "coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f3da12e0ccbcb348969221d29441ac714bbddc4d74e13923d3d5a7a0bebef7a"},
|
{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.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a17eaf46f56ae0f870f14a3cbc2e4632fe3771eab7f687eda1ee59b73d09fe4"},
|
{file = "coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:669135a9d25df55d1ed56a11bf555f37c922cf08d80799d4f65d77d7d6123fcf"},
|
{file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9d3a700304d01a627df9db4322dc082a0ce1e8fc74ac238e2af39ced4c083193"},
|
{file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:71ae8b53855644a0b1579d4041304ddc9995c7b21c8a1f16753c4d8903b4dfed"},
|
{file = "coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-win32.whl", hash = "sha256:dd7a57b33b5cf27acb491e890720af45db05589a80c1ffc798462a765be6d4d7"},
|
{file = "coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613"},
|
||||||
{file = "coverage-7.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f65bb452e579d5540c8b37ec105dd54d8b9307b07bcaa186818c104ffda22441"},
|
{file = "coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e"},
|
||||||
{file = "coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050"},
|
{file = "coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652"},
|
||||||
{file = "coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4"},
|
{file = "coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894"},
|
||||||
{file = "coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b"},
|
{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]
|
[package.extras]
|
||||||
|
@ -1586,14 +1607,14 @@ pyyaml = ">=5.1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mkdocs-material"
|
name = "mkdocs-material"
|
||||||
version = "9.6.15"
|
version = "9.6.16"
|
||||||
description = "Documentation that simply works"
|
description = "Documentation that simply works"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
groups = ["dev"]
|
groups = ["dev"]
|
||||||
files = [
|
files = [
|
||||||
{file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a"},
|
{file = "mkdocs_material-9.6.16-py3-none-any.whl", hash = "sha256:8d1a1282b892fe1fdf77bfeb08c485ba3909dd743c9ba69a19a40f637c6ec18c"},
|
||||||
{file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5"},
|
{file = "mkdocs_material-9.6.16.tar.gz", hash = "sha256:d07011df4a5c02ee0877496d9f1bfc986cfb93d964799b032dd99fe34c0e9d19"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
@ -1817,14 +1838,14 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openai"
|
name = "openai"
|
||||||
version = "1.97.0"
|
version = "1.97.1"
|
||||||
description = "The official Python library for the openai API"
|
description = "The official Python library for the openai API"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
groups = ["main"]
|
groups = ["main"]
|
||||||
files = [
|
files = [
|
||||||
{file = "openai-1.97.0-py3-none-any.whl", hash = "sha256:a1c24d96f4609f3f7f51c9e1c2606d97cc6e334833438659cfd687e9c972c610"},
|
{file = "openai-1.97.1-py3-none-any.whl", hash = "sha256:4e96bbdf672ec3d44968c9ea39d2c375891db1acc1794668d8149d5fa6000606"},
|
||||||
{file = "openai-1.97.0.tar.gz", hash = "sha256:0be349569ccaa4fb54f97bb808423fd29ccaeb1246ee1be762e0c81a47bae0aa"},
|
{file = "openai-1.97.1.tar.gz", hash = "sha256:a744b27ae624e3d4135225da9b1c89c107a2a7e5bc4c93e5b7b5214772ce7a4e"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
@ -1845,84 +1866,95 @@ voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "orjson"
|
name = "orjson"
|
||||||
version = "3.11.0"
|
version = "3.11.1"
|
||||||
description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
|
description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.9"
|
python-versions = ">=3.9"
|
||||||
groups = ["main"]
|
groups = ["main"]
|
||||||
files = [
|
files = [
|
||||||
{file = "orjson-3.11.0-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b8913baba9751f7400f8fa4ec18a8b618ff01177490842e39e47b66c1b04bc79"},
|
{file = "orjson-3.11.1-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:92d771c492b64119456afb50f2dff3e03a2db8b5af0eba32c5932d306f970532"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d4d86910554de5c9c87bc560b3bdd315cc3988adbdc2acf5dda3797079407ed"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0085ef83a4141c2ed23bfec5fecbfdb1e95dd42fc8e8c76057bdeeec1608ea65"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84ae3d329360cf18fb61b67c505c00dedb61b0ee23abfd50f377a58e7d7bed06"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5caf7f13f2e1b4e137060aed892d4541d07dabc3f29e6d891e2383c7ed483440"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47a54e660414baacd71ebf41a69bb17ea25abb3c5b69ce9e13e43be7ac20e342"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f716bcc166524eddfcf9f13f8209ac19a7f27b05cf591e883419079d98c8c99d"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2560b740604751854be146169c1de7e7ee1e6120b00c1788ec3f3a012c6a243f"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:507d6012fab05465d8bf21f5d7f4635ba4b6d60132874e349beff12fb51af7fe"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7f9cd995da9e46fbac0a371f0ff6e89a21d8ecb7a8a113c0acb147b0a32f73"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1545083b0931f754c80fd2422a73d83bea7a6d1b6de104a5f2c8dd3d64c291e"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cf728cb3a013bdf9f4132575404bf885aa773d8bb4205656575e1890fc91990"},
|
{file = "orjson-3.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e217ce3bad76351e1eb29ebe5ca630326f45cd2141f62620107a229909501a3"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c27de273320294121200440cd5002b6aeb922d3cb9dab3357087c69f04ca6934"},
|
{file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06ef26e009304bda4df42e4afe518994cde6f89b4b04c0ff24021064f83f4fbb"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4430ec6ff1a1f4595dd7e0fad991bdb2fed65401ed294984c490ffa025926325"},
|
{file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:ba49683b87bea3ae1489a88e766e767d4f423a669a61270b6d6a7ead1c33bd65"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:325be41a8d7c227d460a9795a181511ba0e731cf3fee088c63eb47e706ea7559"},
|
{file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5072488fcc5cbcda2ece966d248e43ea1d222e19dd4c56d3f82747777f24d864"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9760217b84d1aee393b4436fbe9c639e963ec7bc0f2c074581ce5fb3777e466"},
|
{file = "orjson-3.11.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f58ae2bcd119226fe4aa934b5880fe57b8e97b69e51d5d91c88a89477a307016"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-win32.whl", hash = "sha256:fe36e5012f886ff91c68b87a499c227fa220e9668cea96335219874c8be5fab5"},
|
{file = "orjson-3.11.1-cp310-cp310-win32.whl", hash = "sha256:6723be919c07906781b9c63cc52dc7d2fb101336c99dd7e85d3531d73fb493f7"},
|
||||||
{file = "orjson-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:ebeecd5d5511b3ca9dc4e7db0ab95266afd41baf424cc2fad8c2d3a3cdae650a"},
|
{file = "orjson-3.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:5fd44d69ddfdfb4e8d0d83f09d27a4db34930fba153fbf79f8d4ae8b47914e04"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1785df7ada75c18411ff7e20ac822af904a40161ea9dfe8c55b3f6b66939add6"},
|
{file = "orjson-3.11.1-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:15e2a57ce3b57c1a36acffcc02e823afefceee0a532180c2568c62213c98e3ef"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:a57899bebbcea146616a2426d20b51b3562b4bc9f8039a3bd14fae361c23053d"},
|
{file = "orjson-3.11.1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:17040a83ecaa130474af05bbb59a13cfeb2157d76385556041f945da936b1afd"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b6fbc2fc825aff1456dd358c11a0ad7912a4cb4537d3db92e5334af7463a967"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a68f23f09e5626cc0867a96cf618f68b91acb4753d33a80bf16111fd7f9928c"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4305a638f4cf9bed3746ca3b7c242f14e05177d5baec2527026e0f9ee6c24fb7"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47e07528bb6ccbd6e32a55e330979048b59bfc5518b47c89bc7ab9e3de15174a"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1235fe7bbc37164f69302199d46f29cfb874018738714dccc5a5a44042c79c77"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3807cce72bf40a9d251d689cbec28d2efd27e0f6673709f948f971afd52cb09"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a640e3954e7b4fcb160097551e54cafbde9966be3991932155b71071077881aa"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b2dc7e88da4ca201c940f5e6127998d9e89aa64264292334dad62854bc7fc27"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d750b97d22d5566955e50b02c622f3a1d32744d7a578c878b29a873190ccb7a"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3091dad33ac9e67c0a550cfff8ad5be156e2614d6f5d2a9247df0627751a1495"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfcfe498484161e011f8190a400591c52b026de96b3b3cbd3f21e8999b9dc0e"},
|
{file = "orjson-3.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ed0fce2307843b79a0c83de49f65b86197f1e2310de07af9db2a1a77a61ce4c"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:feaed3ed43a1d2df75c039798eb5ec92c350c7d86be53369bafc4f3700ce7df2"},
|
{file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5a31e84782a18c30abd56774c0cfa7b9884589f4d37d9acabfa0504dad59bb9d"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:aa1120607ec8fc98acf8c54aac6fb0b7b003ba883401fa2d261833111e2fa071"},
|
{file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26b6c821abf1ae515fbb8e140a2406c9f9004f3e52acb780b3dee9bfffddbd84"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c4b48d9775b0cf1f0aca734f4c6b272cbfacfac38e6a455e6520662f9434afb7"},
|
{file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f857b3d134b36a8436f1e24dcb525b6b945108b30746c1b0b556200b5cb76d39"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f018ed1986d79434ac712ff19f951cd00b4dfcb767444410fbb834ebec160abf"},
|
{file = "orjson-3.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df146f2a14116ce80f7da669785fcb411406d8e80136558b0ecda4c924b9ac55"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-win32.whl", hash = "sha256:08e191f8a55ac2c00be48e98a5d10dca004cbe8abe73392c55951bfda60fc123"},
|
{file = "orjson-3.11.1-cp311-cp311-win32.whl", hash = "sha256:d777c57c1f86855fe5492b973f1012be776e0398571f7cc3970e9a58ecf4dc17"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:b5a4214ea59c8a3b56f8d484b28114af74e9fba0956f9be5c3ce388ae143bf1f"},
|
{file = "orjson-3.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:e9a5fd589951f02ec2fcb8d69339258bbf74b41b104c556e6d4420ea5e059313"},
|
||||||
{file = "orjson-3.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:57e8e7198a679ab21241ab3f355a7990c7447559e35940595e628c107ef23736"},
|
{file = "orjson-3.11.1-cp311-cp311-win_arm64.whl", hash = "sha256:4cddbe41ee04fddad35d75b9cf3e3736ad0b80588280766156b94783167777af"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b4089f940c638bb1947d54e46c1cd58f4259072fcc97bc833ea9c78903150ac9"},
|
{file = "orjson-3.11.1-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2b7c8be96db3a977367250c6367793a3c5851a6ca4263f92f0b48d00702f9910"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:8335a0ba1c26359fb5c82d643b4c1abbee2bc62875e0f2b5bde6c8e9e25eb68c"},
|
{file = "orjson-3.11.1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:72e18088f567bd4a45db5e3196677d9ed1605e356e500c8e32dd6e303167a13d"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63c1c9772dafc811d16d6a7efa3369a739da15d1720d6e58ebe7562f54d6f4a2"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d346e2ae1ce17888f7040b65a5a4a0c9734cb20ffbd228728661e020b4c8b3a5"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9457ccbd8b241fb4ba516417a4c5b95ba0059df4ac801309bcb4ec3870f45ad9"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4bda5426ebb02ceb806a7d7ec9ba9ee5e0c93fca62375151a7b1c00bc634d06b"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0846e13abe79daece94a00b92574f294acad1d362be766c04245b9b4dd0e47e1"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10506cebe908542c4f024861102673db534fd2e03eb9b95b30d94438fa220abf"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5587c85ae02f608a3f377b6af9eb04829606f518257cbffa8f5081c1aacf2e2f"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45202ee3f5494644e064c41abd1320497fb92fd31fc73af708708af664ac3b56"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7a1964a71c1567b4570c932a0084ac24ad52c8cf6253d1881400936565ed438"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5adaf01b92e0402a9ac5c3ebe04effe2bbb115f0914a0a53d34ea239a746289"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5a8243e73690cc6e9151c9e1dd046a8f21778d775f7d478fa1eb4daa4897c61"},
|
{file = "orjson-3.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6162a1a757a1f1f4a94bc6ffac834a3602e04ad5db022dd8395a54ed9dd51c81"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:51646f6d995df37b6e1b628f092f41c0feccf1d47e3452c6e95e2474b547d842"},
|
{file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:78404206977c9f946613d3f916727c189d43193e708d760ea5d4b2087d6b0968"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:2fb8ca8f0b4e31b8aaec674c7540649b64ef02809410506a44dc68d31bd5647b"},
|
{file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:db48f8e81072e26df6cdb0e9fff808c28597c6ac20a13d595756cf9ba1fed48a"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:64a6a3e94a44856c3f6557e6aa56a6686544fed9816ae0afa8df9077f5759791"},
|
{file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0c1e394e67ced6bb16fea7054d99fbdd99a539cf4d446d40378d4c06e0a8548d"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d69f95d484938d8fab5963e09131bcf9fbbb81fa4ec132e316eb2fb9adb8ce78"},
|
{file = "orjson-3.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e7a840752c93d4eecd1378e9bb465c3703e127b58f675cd5c620f361b6cf57a4"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-win32.whl", hash = "sha256:8514f9f9c667ce7d7ef709ab1a73e7fcab78c297270e90b1963df7126d2b0e23"},
|
{file = "orjson-3.11.1-cp312-cp312-win32.whl", hash = "sha256:4537b0e09f45d2b74cb69c7f39ca1e62c24c0488d6bf01cd24673c74cd9596bf"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:41b38a894520b8cb5344a35ffafdf6ae8042f56d16771b2c5eb107798cee85ee"},
|
{file = "orjson-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:dbee6b050062540ae404530cacec1bf25e56e8d87d8d9b610b935afeb6725cae"},
|
||||||
{file = "orjson-3.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:5579acd235dd134467340b2f8a670c1c36023b5a69c6a3174c4792af7502bd92"},
|
{file = "orjson-3.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:f55e557d4248322d87c4673e085c7634039ff04b47bfc823b87149ae12bef60d"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a8ba9698655e16746fdf5266939427da0f9553305152aeb1a1cc14974a19cfb"},
|
{file = "orjson-3.11.1-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53cfefe4af059e65aabe9683f76b9c88bf34b4341a77d329227c2424e0e59b0e"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:67133847f9a35a5ef5acfa3325d4a2f7fe05c11f1505c4117bb086fc06f2a58f"},
|
{file = "orjson-3.11.1-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:93d5abed5a6f9e1b6f9b5bf6ed4423c11932b5447c2f7281d3b64e0f26c6d064"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f797d57814975b78f5f5423acb003db6f9be5186b72d48bd97a1000e89d331d"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbf06642f3db2966df504944cdd0eb68ca2717f0353bb20b20acd78109374a6"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:28acd19822987c5163b9e03a6e60853a52acfee384af2b394d11cb413b889246"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dddf4e78747fa7f2188273f84562017a3c4f0824485b78372513c1681ea7a894"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8d38d9e1e2cf9729658e35956cf01e13e89148beb4cb9e794c9c10c5cb252f8"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa3fe8653c9f57f0e16f008e43626485b6723b84b2f741f54d1258095b655912"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05f094edd2b782650b0761fd78858d9254de1c1286f5af43145b3d08cdacfd51"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6334d2382aff975a61f6f4d1c3daf39368b887c7de08f7c16c58f485dcf7adb2"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d09176a4a9e04a5394a4a0edd758f645d53d903b306d02f2691b97d5c736a9e"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3d0855b643f259ee0cb76fe3df4c04483354409a520a902b067c674842eb6b8"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a585042104e90a61eda2564d11317b6a304eb4e71cd33e839f5af6be56c34d3"},
|
{file = "orjson-3.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0eacdfeefd0a79987926476eb16e0245546bedeb8febbbbcf4b653e79257a8e4"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2218629dbfdeeb5c9e0573d59f809d42f9d49ae6464d2f479e667aee14c3ef4"},
|
{file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ed07faf9e4873518c60480325dcbc16d17c59a165532cccfb409b4cdbaeff24"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:613e54a2b10b51b656305c11235a9c4a5c5491ef5c283f86483d4e9e123ed5e4"},
|
{file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d6d308dd578ae3658f62bb9eba54801533225823cd3248c902be1ebc79b5e014"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9dac7fbf3b8b05965986c5cfae051eb9a30fced7f15f1d13a5adc608436eb486"},
|
{file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c4aa13ca959ba6b15c0a98d3d204b850f9dc36c08c9ce422ffb024eb30d6e058"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93b64b254414e2be55ac5257124b5602c5f0b4d06b80bd27d1165efe8f36e836"},
|
{file = "orjson-3.11.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:be3d0653322abc9b68e5bcdaee6cfd58fcbe9973740ab222b87f4d687232ab1f"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-win32.whl", hash = "sha256:359cbe11bc940c64cb3848cf22000d2aef36aff7bfd09ca2c0b9cb309c387132"},
|
{file = "orjson-3.11.1-cp313-cp313-win32.whl", hash = "sha256:4dd34e7e2518de8d7834268846f8cab7204364f427c56fb2251e098da86f5092"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:0759b36428067dc777b202dd286fbdd33d7f261c6455c4238ea4e8474358b1e6"},
|
{file = "orjson-3.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:d6895d32032b6362540e6d0694b19130bb4f2ad04694002dce7d8af588ca5f77"},
|
||||||
{file = "orjson-3.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:51cdca2f36e923126d0734efaf72ddbb5d6da01dbd20eab898bdc50de80d7b5a"},
|
{file = "orjson-3.11.1-cp313-cp313-win_arm64.whl", hash = "sha256:bb7c36d5d3570fcbb01d24fa447a21a7fe5a41141fd88e78f7994053cc4e28f4"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d79c180cfb3ae68f13245d0ff551dca03d96258aa560830bf8a223bd68d8272c"},
|
{file = "orjson-3.11.1-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7b71ef394327b3d0b39f6ea7ade2ecda2731a56c6a7cbf0d6a7301203b92a89b"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:105bca887532dc71ce4b05a5de95dea447a310409d7a8cf0cb1c4a120469e9ad"},
|
{file = "orjson-3.11.1-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:77c0fe28ed659b62273995244ae2aa430e432c71f86e4573ab16caa2f2e3ca5e"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acf5a63ae9cdb88274126af85913ceae554d8fd71122effa24a53227abbeee16"},
|
{file = "orjson-3.11.1-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:1495692f1f1ba2467df429343388a0ed259382835922e124c0cfdd56b3d1f727"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:894635df36c0be32f1c8c8607e853b8865edb58e7618e57892e85d06418723eb"},
|
{file = "orjson-3.11.1-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:08c6a762fca63ca4dc04f66c48ea5d2428db55839fec996890e1bfaf057b658c"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02dd4f0a1a2be943a104ce5f3ec092631ee3e9f0b4bb9eeee3400430bd94ddef"},
|
{file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9e26794fe3976810b2c01fda29bd9ac7c91a3c1284b29cc9a383989f7b614037"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:720b4bb5e1b971960a62c2fa254c2d2a14e7eb791e350d05df8583025aa59d15"},
|
{file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4b4b4f8f0b1d3ef8dc73e55363a0ffe012a42f4e2f1a140bf559698dca39b3fa"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bf058105a8aed144e0d1cfe7ac4174748c3fc7203f225abaeac7f4121abccb0"},
|
{file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:848be553ea35aa89bfefbed2e27c8a41244c862956ab8ba00dc0b27e84fd58de"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a2788f741e5a0e885e5eaf1d91d0c9106e03cb9575b0c55ba36fd3d48b0b1e9b"},
|
{file = "orjson-3.11.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c964c29711a4b1df52f8d9966f015402a6cf87753a406c1c4405c407dd66fd45"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:c60c99fe1e15894367b0340b2ff16c7c69f9c3f3a54aa3961a58c102b292ad94"},
|
{file = "orjson-3.11.1-cp314-cp314-win32.whl", hash = "sha256:33aada2e6b6bc9c540d396528b91e666cedb383740fee6e6a917f561b390ecb1"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:99d17aab984f4d029b8f3c307e6be3c63d9ee5ef55e30d761caf05e883009949"},
|
{file = "orjson-3.11.1-cp314-cp314-win_amd64.whl", hash = "sha256:68e10fd804e44e36188b9952543e3fa22f5aa8394da1b5283ca2b423735c06e8"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e98f02e23611763c9e5dfcb83bd33219231091589f0d1691e721aea9c52bf329"},
|
{file = "orjson-3.11.1-cp314-cp314-win_arm64.whl", hash = "sha256:f3cf6c07f8b32127d836be8e1c55d4f34843f7df346536da768e9f73f22078a1"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-win32.whl", hash = "sha256:923301f33ea866b18f8836cf41d9c6d33e3b5cab8577d20fed34ec29f0e13a0d"},
|
{file = "orjson-3.11.1-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:3d593a9e0bccf2c7401ae53625b519a7ad7aa555b1c82c0042b322762dc8af4e"},
|
||||||
{file = "orjson-3.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:475491bb78af2a0170f49e90013f1a0f1286527f3617491f8940d7e5da862da7"},
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0baad413c498fc1eef568504f11ea46bc71f94b845c075e437da1e2b85b4fb86"},
|
||||||
{file = "orjson-3.11.0.tar.gz", hash = "sha256:2e4c129da624f291bcc607016a99e7f04a353f6874f3bd8d9b47b88597d5f700"},
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:22cf17ae1dae3f9b5f37bfcdba002ed22c98bbdb70306e42dc18d8cc9b50399a"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e855c1e97208133ce88b3ef6663c9a82ddf1d09390cd0856a1638deee0390c3c"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5861c5f7acff10599132854c70ab10abf72aebf7c627ae13575e5f20b1ab8fe"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1e6415c5b5ff3a616a6dafad7b6ec303a9fc625e9313c8e1268fb1370a63dcb"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:912579642f5d7a4a84d93c5eed8daf0aa34e1f2d3f4dc6571a8e418703f5701e"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2092e1d3b33f64e129ff8271642afddc43763c81f2c30823b4a4a4a5f2ea5b55"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:b8ac64caba1add2c04e9cd4782d4d0c4d6c554b7a3369bdec1eed7854c98db7b"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:23196b826ebc85c43f8e27bee0ab33c5fb13a29ea47fb4fcd6ebb1e660eb0252"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f2d3364cfad43003f1e3d564a069c8866237cca30f9c914b26ed2740b596ed00"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-win32.whl", hash = "sha256:20b0dca94ea4ebe4628330de50975b35817a3f52954c1efb6d5d0498a3bbe581"},
|
||||||
|
{file = "orjson-3.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:200c3ad7ed8b5d31d49143265dfebd33420c4b61934ead16833b5cd2c3d241be"},
|
||||||
|
{file = "orjson-3.11.1.tar.gz", hash = "sha256:48d82770a5fd88778063604c566f9c7c71820270c9cc9338d25147cbf34afd96"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3218,14 +3250,14 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich"
|
name = "rich"
|
||||||
version = "14.0.0"
|
version = "14.1.0"
|
||||||
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8.0"
|
python-versions = ">=3.8.0"
|
||||||
groups = ["dev"]
|
groups = ["dev"]
|
||||||
files = [
|
files = [
|
||||||
{file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"},
|
{file = "rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f"},
|
||||||
{file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"},
|
{file = "rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
@ -3237,30 +3269,30 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.12.4"
|
version = "0.12.5"
|
||||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
groups = ["dev"]
|
groups = ["dev"]
|
||||||
files = [
|
files = [
|
||||||
{file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a"},
|
{file = "ruff-0.12.5-py3-none-linux_armv6l.whl", hash = "sha256:1de2c887e9dec6cb31fcb9948299de5b2db38144e66403b9660c9548a67abd92"},
|
||||||
{file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442"},
|
{file = "ruff-0.12.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d1ab65e7d8152f519e7dea4de892317c9da7a108da1c56b6a3c1d5e7cf4c5e9a"},
|
||||||
{file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e"},
|
{file = "ruff-0.12.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:962775ed5b27c7aa3fdc0d8f4d4433deae7659ef99ea20f783d666e77338b8cf"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73b4cae449597e7195a49eb1cdca89fd9fbb16140c7579899e87f4c85bf82f73"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b13489c3dc50de5e2d40110c0cce371e00186b880842e245186ca862bf9a1ac"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1504fea81461cf4841778b3ef0a078757602a3b3ea4b008feb1308cb3f23e08"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c7da4129016ae26c32dfcbd5b671fe652b5ab7fc40095d80dcff78175e7eddd4"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca972c80f7ebcfd8af75a0f18b17c42d9f1ef203d163669150453f50ca98ab7b"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dbbf9f25dfb501f4237ae7501d6364b76a01341c6f1b2cd6764fe449124bb2a"},
|
||||||
{file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57"},
|
{file = "ruff-0.12.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c47dea6ae39421851685141ba9734767f960113d51e83fd7bb9958d5be8763a"},
|
||||||
{file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184"},
|
{file = "ruff-0.12.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5076aa0e61e30f848846f0265c873c249d4b558105b221be1828f9f79903dc5"},
|
||||||
{file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb"},
|
{file = "ruff-0.12.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a5a4c7830dadd3d8c39b1cc85386e2c1e62344f20766be6f173c22fb5f72f293"},
|
||||||
{file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1"},
|
{file = "ruff-0.12.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:46699f73c2b5b137b9dc0fc1a190b43e35b008b398c6066ea1350cce6326adcb"},
|
||||||
{file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b"},
|
{file = "ruff-0.12.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5a655a0a0d396f0f072faafc18ebd59adde8ca85fb848dc1b0d9f024b9c4d3bb"},
|
||||||
{file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93"},
|
{file = "ruff-0.12.5-py3-none-win32.whl", hash = "sha256:dfeb2627c459b0b78ca2bbdc38dd11cc9a0a88bf91db982058b26ce41714ffa9"},
|
||||||
{file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a"},
|
{file = "ruff-0.12.5-py3-none-win_amd64.whl", hash = "sha256:ae0d90cf5f49466c954991b9d8b953bd093c32c27608e409ae3564c63c5306a5"},
|
||||||
{file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e"},
|
{file = "ruff-0.12.5-py3-none-win_arm64.whl", hash = "sha256:48cdbfc633de2c5c37d9f090ba3b352d1576b0015bfc3bc98eaf230275b7e805"},
|
||||||
{file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873"},
|
{file = "ruff-0.12.5.tar.gz", hash = "sha256:b209db6102b66f13625940b7f8c7d0f18e20039bb7f6101fbdac935c9612057e"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -173,7 +173,7 @@ def test_group_recipe_actions_trigger_post(
|
||||||
response = api_client.post(
|
response = api_client.post(
|
||||||
api_routes.households_recipe_actions_item_id_trigger_recipe_slug(action_id, recipe_slug),
|
api_routes.households_recipe_actions_item_id_trigger_recipe_slug(action_id, recipe_slug),
|
||||||
headers=unique_user.token,
|
headers=unique_user.token,
|
||||||
json={"scaled_amount": 1.0},
|
json={"recipe_scale": 1.0},
|
||||||
)
|
)
|
||||||
|
|
||||||
if missing_action or missing_recipe:
|
if missing_action or missing_recipe:
|
||||||
|
@ -190,7 +190,7 @@ def test_group_recipe_actions_trigger_invalid_type(api_client: TestClient, uniqu
|
||||||
response = api_client.post(
|
response = api_client.post(
|
||||||
api_routes.households_recipe_actions_item_id_trigger_recipe_slug(recipe_action.id, recipe.id),
|
api_routes.households_recipe_actions_item_id_trigger_recipe_slug(recipe_action.id, recipe.id),
|
||||||
headers=unique_user.token,
|
headers=unique_user.token,
|
||||||
json={"scaled_amount": 1.0},
|
json={"recipe_scale": 1.0},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
|
|
|
@ -3,6 +3,8 @@ from datetime import UTC, datetime
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
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 import api_routes, assert_deserialize, jsonify
|
||||||
from tests.utils.fixture_schemas import TestUser
|
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)
|
response = api_client.get(api_routes.households_webhooks_item_id(item_id), headers=unique_user.token)
|
||||||
assert response.status_code == 404
|
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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue