mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-24 16:53:12 -05:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b54cdf6425 | ||
|
|
02da2114f9 | ||
|
|
a67533a778 | ||
|
|
59ad834c12 | ||
|
|
315d5b370e | ||
|
|
130813ffe4 | ||
|
|
65ddb7c9e2 | ||
|
|
dbe29e15ae | ||
|
|
980b3c634b | ||
|
|
457d8c93ce | ||
|
|
23aad6358c | ||
|
|
7c896361f2 | ||
|
|
5b7f5738e3 | ||
|
|
5bfcb80c98 |
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -68,6 +68,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@v6
|
uses: peter-evans/create-pull-request@v6
|
||||||
|
# This doesn't currently work for us because it creates the PR but the workflows don't run.
|
||||||
|
# TODO: Provide a personal access token as a parameter here, that solves that problem.
|
||||||
|
# https://github.com/peter-evans/create-pull-request
|
||||||
with:
|
with:
|
||||||
commit-message: "Update image tag, for release ${{ github.event.release.tag_name }}"
|
commit-message: "Update image tag, for release ${{ github.event.release.tag_name }}"
|
||||||
branch: "docs/newrelease-update-version-${{ github.event.release.tag_name }}"
|
branch: "docs/newrelease-update-version-${{ github.event.release.tag_name }}"
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ tasks:
|
|||||||
py:lint:
|
py:lint:
|
||||||
desc: runs python linter
|
desc: runs python linter
|
||||||
cmds:
|
cmds:
|
||||||
- poetry run ruff mealie
|
- poetry run ruff check mealie
|
||||||
|
|
||||||
py:check:
|
py:check:
|
||||||
desc: runs all linters, type checkers, and formatters
|
desc: runs all linters, type checkers, and formatters
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ from pathlib import Path
|
|||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from jinja2 import Template
|
from jinja2 import Template
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, ConfigDict
|
||||||
from utils import PROJECT_DIR, CodeTemplates, HTTPRequest, RouteObject
|
from utils import PROJECT_DIR, CodeTemplates, HTTPRequest, RouteObject, RequestType
|
||||||
|
|
||||||
CWD = Path(__file__).parent
|
CWD = Path(__file__).parent
|
||||||
|
|
||||||
@@ -12,23 +12,25 @@ OUTFILE = PROJECT_DIR / "tests" / "utils" / "api_routes" / "__init__.py"
|
|||||||
|
|
||||||
|
|
||||||
class PathObject(BaseModel):
|
class PathObject(BaseModel):
|
||||||
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
||||||
route_object: RouteObject
|
route_object: RouteObject
|
||||||
http_verbs: list[HTTPRequest]
|
http_verbs: list[HTTPRequest]
|
||||||
|
|
||||||
class Config:
|
|
||||||
arbitrary_types_allowed = True
|
|
||||||
|
|
||||||
|
|
||||||
def get_path_objects(app: FastAPI):
|
def get_path_objects(app: FastAPI):
|
||||||
paths = []
|
paths = []
|
||||||
|
|
||||||
for key, value in app.openapi().items():
|
for key, value in app.openapi().items():
|
||||||
if key == "paths":
|
if key == "paths":
|
||||||
for key, value in value.items():
|
for key, value2 in value.items():
|
||||||
|
verbs = []
|
||||||
|
for k, v in value2.items():
|
||||||
|
verbs.append(HTTPRequest(request_type=k, **v))
|
||||||
|
|
||||||
paths.append(
|
paths.append(
|
||||||
PathObject(
|
PathObject(
|
||||||
route_object=RouteObject(key),
|
route_object=RouteObject(key),
|
||||||
http_verbs=[HTTPRequest(request_type=k, **v) for k, v in value.items()],
|
http_verbs=verbs,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from pathlib import Path
|
|||||||
import dotenv
|
import dotenv
|
||||||
import requests
|
import requests
|
||||||
from jinja2 import Template
|
from jinja2 import Template
|
||||||
from pydantic import Extra
|
from pydantic import ConfigDict
|
||||||
from requests import Response
|
from requests import Response
|
||||||
from utils import CodeDest, CodeKeys, inject_inline, log
|
from utils import CodeDest, CodeKeys, inject_inline, log
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ LOCALE_DATA: dict[str, LocaleData] = {
|
|||||||
"zh-TW": LocaleData(name="繁體中文 (Chinese traditional)"),
|
"zh-TW": LocaleData(name="繁體中文 (Chinese traditional)"),
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCALE_TEMPLATE = """// This Code is auto generated by gen_global_components.py
|
LOCALE_TEMPLATE = """// This Code is auto generated by gen_ts_locales.py
|
||||||
export const LOCALES = [{% for locale in locales %}
|
export const LOCALES = [{% for locale in locales %}
|
||||||
{
|
{
|
||||||
name: "{{ locale.name }}",
|
name: "{{ locale.name }}",
|
||||||
@@ -70,6 +70,8 @@ export const LOCALES = [{% for locale in locales %}
|
|||||||
|
|
||||||
|
|
||||||
class TargetLanguage(MealieModel):
|
class TargetLanguage(MealieModel):
|
||||||
|
model_config = ConfigDict(populate_by_name=True, extra="allow")
|
||||||
|
|
||||||
id: str
|
id: str
|
||||||
name: str
|
name: str
|
||||||
locale: str
|
locale: str
|
||||||
@@ -78,10 +80,6 @@ class TargetLanguage(MealieModel):
|
|||||||
twoLettersCode: str
|
twoLettersCode: str
|
||||||
progress: float = 0.0
|
progress: float = 0.0
|
||||||
|
|
||||||
class Config:
|
|
||||||
extra = Extra.allow
|
|
||||||
allow_population_by_field_name = True
|
|
||||||
|
|
||||||
|
|
||||||
class CrowdinApi:
|
class CrowdinApi:
|
||||||
project_name = "Mealie"
|
project_name = "Mealie"
|
||||||
@@ -152,6 +150,7 @@ PROJECT_DIR = Path(__file__).parent.parent.parent
|
|||||||
datetime_dir = PROJECT_DIR / "frontend" / "lang" / "dateTimeFormats"
|
datetime_dir = PROJECT_DIR / "frontend" / "lang" / "dateTimeFormats"
|
||||||
locales_dir = PROJECT_DIR / "frontend" / "lang" / "messages"
|
locales_dir = PROJECT_DIR / "frontend" / "lang" / "messages"
|
||||||
nuxt_config = PROJECT_DIR / "frontend" / "nuxt.config.js"
|
nuxt_config = PROJECT_DIR / "frontend" / "nuxt.config.js"
|
||||||
|
reg_valid = PROJECT_DIR / "mealie" / "schema" / "_mealie" / "validators.py"
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This snippet walks the message and dat locales directories and generates the import information
|
This snippet walks the message and dat locales directories and generates the import information
|
||||||
@@ -175,6 +174,19 @@ def inject_nuxt_values():
|
|||||||
inject_inline(nuxt_config, CodeKeys.nuxt_local_dates, all_date_locales)
|
inject_inline(nuxt_config, CodeKeys.nuxt_local_dates, all_date_locales)
|
||||||
|
|
||||||
|
|
||||||
|
def inject_registration_validation_values():
|
||||||
|
all_langs = []
|
||||||
|
for match in locales_dir.glob("*.json"):
|
||||||
|
lang_string = f'"{match.stem}",'
|
||||||
|
all_langs.append(lang_string)
|
||||||
|
|
||||||
|
# sort
|
||||||
|
all_langs.sort()
|
||||||
|
|
||||||
|
log.debug(f"injecting locales into user registration validation -> {reg_valid}")
|
||||||
|
inject_inline(reg_valid, CodeKeys.nuxt_local_messages, all_langs)
|
||||||
|
|
||||||
|
|
||||||
def generate_locales_ts_file():
|
def generate_locales_ts_file():
|
||||||
api = CrowdinApi("")
|
api = CrowdinApi("")
|
||||||
models = api.get_languages()
|
models = api.get_languages()
|
||||||
@@ -193,6 +205,7 @@ def main():
|
|||||||
|
|
||||||
generate_locales_ts_file()
|
generate_locales_ts_file()
|
||||||
inject_nuxt_values()
|
inject_nuxt_values()
|
||||||
|
inject_registration_validation_values()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from utils import log
|
|||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
template = """// This Code is auto generated by gen_global_components.py
|
template = """// This Code is auto generated by gen_ts_types.py
|
||||||
{% for name in global %}import {{ name }} from "@/components/global/{{ name }}.vue";
|
{% for name in global %}import {{ name }} from "@/components/global/{{ name }}.vue";
|
||||||
{% endfor %}{% for name in layout %}import {{ name }} from "@/components/layout/{{ name }}.vue";
|
{% endfor %}{% for name in layout %}import {{ name }} from "@/components/layout/{{ name }}.vue";
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import re
|
import re
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from humps import camelize
|
from humps import camelize
|
||||||
from pydantic import BaseModel, Extra, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
from slugify import slugify
|
from slugify import slugify
|
||||||
|
|
||||||
|
|
||||||
@@ -34,33 +33,30 @@ class ParameterIn(str, Enum):
|
|||||||
|
|
||||||
|
|
||||||
class RouterParameter(BaseModel):
|
class RouterParameter(BaseModel):
|
||||||
|
model_config = ConfigDict(extra="allow")
|
||||||
|
|
||||||
required: bool = False
|
required: bool = False
|
||||||
name: str
|
name: str
|
||||||
location: ParameterIn = Field(..., alias="in")
|
location: ParameterIn = Field(..., alias="in")
|
||||||
|
|
||||||
class Config:
|
|
||||||
extra = Extra.allow
|
|
||||||
|
|
||||||
|
|
||||||
class RequestBody(BaseModel):
|
class RequestBody(BaseModel):
|
||||||
required: bool = False
|
model_config = ConfigDict(extra="allow")
|
||||||
|
|
||||||
class Config:
|
required: bool = False
|
||||||
extra = Extra.allow
|
|
||||||
|
|
||||||
|
|
||||||
class HTTPRequest(BaseModel):
|
class HTTPRequest(BaseModel):
|
||||||
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
||||||
|
|
||||||
request_type: RequestType
|
request_type: RequestType
|
||||||
description: str = ""
|
description: str = ""
|
||||||
summary: str
|
summary: str
|
||||||
requestBody: Optional[RequestBody]
|
request_body: RequestBody | None = None
|
||||||
|
|
||||||
parameters: list[RouterParameter] = []
|
parameters: list[RouterParameter] = []
|
||||||
tags: list[str] | None = []
|
tags: list[str] | None = []
|
||||||
|
|
||||||
class Config:
|
|
||||||
extra = Extra.allow
|
|
||||||
|
|
||||||
def list_as_js_object_string(self, parameters, braces=True):
|
def list_as_js_object_string(self, parameters, braces=True):
|
||||||
if len(parameters) == 0:
|
if len(parameters) == 0:
|
||||||
return ""
|
return ""
|
||||||
@@ -71,11 +67,11 @@ class HTTPRequest(BaseModel):
|
|||||||
return ", ".join(parameters)
|
return ", ".join(parameters)
|
||||||
|
|
||||||
def payload(self):
|
def payload(self):
|
||||||
return "payload" if self.requestBody else ""
|
return "payload" if self.request_body else ""
|
||||||
|
|
||||||
def function_args(self):
|
def function_args(self):
|
||||||
all_params = [p.name for p in self.parameters]
|
all_params = [p.name for p in self.parameters]
|
||||||
if self.requestBody:
|
if self.request_body:
|
||||||
all_params.append("payload")
|
all_params.append("payload")
|
||||||
return self.list_as_js_object_string(all_params)
|
return self.list_as_js_object_string(all_params)
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class CodeSlicer:
|
|||||||
self._next_line += 1
|
self._next_line += 1
|
||||||
|
|
||||||
|
|
||||||
def get_indentation_of_string(line: str, comment_char: str = "//") -> str:
|
def get_indentation_of_string(line: str, comment_char: str = "//|#") -> str:
|
||||||
return re.sub(rf"{comment_char}.*", "", line).removesuffix("\n")
|
return re.sub(rf"{comment_char}.*", "", line).removesuffix("\n")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
|
|||||||
version: "3.7"
|
version: "3.7"
|
||||||
services:
|
services:
|
||||||
mealie:
|
mealie:
|
||||||
image: ghcr.io/mealie-recipes/mealie:v1.1.0 # (3)
|
image: ghcr.io/mealie-recipes/mealie:v1.3.1 # (3)
|
||||||
container_name: mealie
|
container_name: mealie
|
||||||
ports:
|
ports:
|
||||||
- "9925:9000" # (1)
|
- "9925:9000" # (1)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
|
|||||||
version: "3.7"
|
version: "3.7"
|
||||||
services:
|
services:
|
||||||
mealie:
|
mealie:
|
||||||
image: ghcr.io/mealie-recipes/mealie:v1.1.0 # (3)
|
image: ghcr.io/mealie-recipes/mealie:v1.3.1 # (3)
|
||||||
container_name: mealie
|
container_name: mealie
|
||||||
ports:
|
ports:
|
||||||
- "9925:9000" # (1)
|
- "9925:9000" # (1)
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
<v-hover v-slot="{ hover }" :open-delay="50">
|
<v-hover v-slot="{ hover }" :open-delay="50">
|
||||||
<v-card
|
<v-card
|
||||||
:class="{ 'on-hover': hover }"
|
:class="{ 'on-hover': hover }"
|
||||||
|
:style="{ cursor }"
|
||||||
:elevation="hover ? 12 : 2"
|
:elevation="hover ? 12 : 2"
|
||||||
:to="route ? recipeRoute : ''"
|
:to="recipeRoute"
|
||||||
:min-height="imageHeight + 75"
|
:min-height="imageHeight + 75"
|
||||||
@click="$emit('click')"
|
@click="$emit('click')"
|
||||||
>
|
>
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
</v-card-title>
|
</v-card-title>
|
||||||
|
|
||||||
<slot name="actions">
|
<slot name="actions">
|
||||||
<v-card-actions class="px-1">
|
<v-card-actions v-if="showRecipeContent" class="px-1">
|
||||||
<RecipeFavoriteBadge v-if="isOwnGroup" class="absolute" :slug="slug" show-always />
|
<RecipeFavoriteBadge v-if="isOwnGroup" class="absolute" :slug="slug" show-always />
|
||||||
|
|
||||||
<RecipeRating class="pb-1" :value="rating" :name="name" :slug="slug" :small="true" />
|
<RecipeRating class="pb-1" :value="rating" :name="name" :slug="slug" :small="true" />
|
||||||
@@ -101,10 +102,6 @@ export default defineComponent({
|
|||||||
required: false,
|
required: false,
|
||||||
default: "abc123",
|
default: "abc123",
|
||||||
},
|
},
|
||||||
route: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
tags: {
|
tags: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
@@ -123,14 +120,18 @@ export default defineComponent({
|
|||||||
const { isOwnGroup } = useLoggedInState();
|
const { isOwnGroup } = useLoggedInState();
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || "")
|
const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || "");
|
||||||
|
const showRecipeContent = computed(() => props.recipeId && props.slug);
|
||||||
const recipeRoute = computed<string>(() => {
|
const recipeRoute = computed<string>(() => {
|
||||||
return `/g/${groupSlug.value}/r/${props.slug}`;
|
return showRecipeContent.value ? `/g/${groupSlug.value}/r/${props.slug}` : "";
|
||||||
});
|
});
|
||||||
|
const cursor = computed(() => showRecipeContent.value ? "pointer" : "auto");
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isOwnGroup,
|
isOwnGroup,
|
||||||
recipeRoute,
|
recipeRoute,
|
||||||
|
showRecipeContent,
|
||||||
|
cursor,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<v-card
|
<v-card
|
||||||
:ripple="false"
|
:ripple="false"
|
||||||
:class="isFlat ? 'mx-auto flat' : 'mx-auto'"
|
:class="isFlat ? 'mx-auto flat' : 'mx-auto'"
|
||||||
|
:style="{ cursor }"
|
||||||
hover
|
hover
|
||||||
:to="$listeners.selected ? undefined : recipeRoute"
|
:to="$listeners.selected ? undefined : recipeRoute"
|
||||||
@click="$emit('selected')"
|
@click="$emit('selected')"
|
||||||
@@ -37,8 +38,9 @@
|
|||||||
</v-list-item-subtitle>
|
</v-list-item-subtitle>
|
||||||
<div class="d-flex flex-wrap justify-end align-center">
|
<div class="d-flex flex-wrap justify-end align-center">
|
||||||
<slot name="actions">
|
<slot name="actions">
|
||||||
<RecipeFavoriteBadge v-if="isOwnGroup" :slug="slug" show-always />
|
<RecipeFavoriteBadge v-if="isOwnGroup && showRecipeContent" :slug="slug" show-always />
|
||||||
<v-rating
|
<v-rating
|
||||||
|
v-if="showRecipeContent"
|
||||||
color="secondary"
|
color="secondary"
|
||||||
:class="isOwnGroup ? 'ml-auto' : 'ml-auto pb-2'"
|
:class="isOwnGroup ? 'ml-auto' : 'ml-auto pb-2'"
|
||||||
background-color="secondary lighten-3"
|
background-color="secondary lighten-3"
|
||||||
@@ -52,7 +54,7 @@
|
|||||||
<!-- If we're not logged-in, no items display, so we hide this menu -->
|
<!-- If we're not logged-in, no items display, so we hide this menu -->
|
||||||
<!-- We also add padding to the v-rating above to compensate -->
|
<!-- We also add padding to the v-rating above to compensate -->
|
||||||
<RecipeContextMenu
|
<RecipeContextMenu
|
||||||
v-if="isOwnGroup"
|
v-if="isOwnGroup && showRecipeContent"
|
||||||
:slug="slug"
|
:slug="slug"
|
||||||
:menu-icon="$globals.icons.dotsHorizontal"
|
:menu-icon="$globals.icons.dotsHorizontal"
|
||||||
:name="name"
|
:name="name"
|
||||||
@@ -113,10 +115,6 @@ export default defineComponent({
|
|||||||
required: false,
|
required: false,
|
||||||
default: "abc123",
|
default: "abc123",
|
||||||
},
|
},
|
||||||
route: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
recipeId: {
|
recipeId: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
@@ -135,14 +133,19 @@ export default defineComponent({
|
|||||||
const { isOwnGroup } = useLoggedInState();
|
const { isOwnGroup } = useLoggedInState();
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || "")
|
const groupSlug = computed(() => route.value.params.groupSlug || $auth.user?.groupSlug || "");
|
||||||
|
const showRecipeContent = computed(() => props.recipeId && props.slug);
|
||||||
const recipeRoute = computed<string>(() => {
|
const recipeRoute = computed<string>(() => {
|
||||||
return `/g/${groupSlug.value}/r/${props.slug}`;
|
return showRecipeContent.value ? `/g/${groupSlug.value}/r/${props.slug}` : "";
|
||||||
});
|
});
|
||||||
|
const cursor = computed(() => showRecipeContent.value ? "pointer" : "auto");
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isOwnGroup,
|
isOwnGroup,
|
||||||
recipeRoute,
|
recipeRoute,
|
||||||
|
showRecipeContent,
|
||||||
|
cursor,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
:rating="recipe.rating"
|
:rating="recipe.rating"
|
||||||
:image="recipe.image"
|
:image="recipe.image"
|
||||||
:recipe-id="recipe.id"
|
:recipe-id="recipe.id"
|
||||||
:route="true"
|
|
||||||
v-on="$listeners.selected ? { selected: () => handleSelect(recipe) } : {}"
|
v-on="$listeners.selected ? { selected: () => handleSelect(recipe) } : {}"
|
||||||
/>
|
/>
|
||||||
</v-card>
|
</v-card>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="edit" class="d-flex justify-end">
|
<div v-if="edit" class="d-flex justify-end">
|
||||||
<BaseButton class="ml-auto my-2" @click="addNote"> {{ $t("general.new") }}</BaseButton>
|
<BaseButton class="ml-auto my-2" @click="addNote"> {{ $t("general.add") }}</BaseButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
/>
|
/>
|
||||||
<div v-if="isEditForm" class="d-flex">
|
<div v-if="isEditForm" class="d-flex">
|
||||||
<RecipeDialogBulkAdd class="ml-auto my-2 mr-1" @bulk-data="addStep" />
|
<RecipeDialogBulkAdd class="ml-auto my-2 mr-1" @bulk-data="addStep" />
|
||||||
<BaseButton class="my-2" @click="addStep()"> {{ $t("general.new") }}</BaseButton>
|
<BaseButton class="my-2" @click="addStep()"> {{ $t("general.add") }}</BaseButton>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="!$vuetify.breakpoint.mdAndUp">
|
<div v-if="!$vuetify.breakpoint.mdAndUp">
|
||||||
<RecipePageOrganizers :recipe="recipe" />
|
<RecipePageOrganizers :recipe="recipe" />
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
<span>{{ parserToolTip }}</span>
|
<span>{{ parserToolTip }}</span>
|
||||||
</v-tooltip>
|
</v-tooltip>
|
||||||
<RecipeDialogBulkAdd class="mx-1 mb-1" @bulk-data="addIngredient" />
|
<RecipeDialogBulkAdd class="mx-1 mb-1" @bulk-data="addIngredient" />
|
||||||
<BaseButton class="mb-1" @click="addIngredient" > {{ $t("general.new") }} </BaseButton>
|
<BaseButton class="mb-1" @click="addIngredient" > {{ $t("general.add") }} </BaseButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// This Code is auto generated by gen_global_components.py
|
// This Code is auto generated by gen_ts_locales.py
|
||||||
export const LOCALES = [
|
export const LOCALES = [
|
||||||
{
|
{
|
||||||
name: "繁體中文 (Chinese traditional)",
|
name: "繁體中文 (Chinese traditional)",
|
||||||
value: "zh-TW",
|
value: "zh-TW",
|
||||||
progress: 30,
|
progress: 29,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -15,7 +15,7 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Tiếng Việt (Vietnamese)",
|
name: "Tiếng Việt (Vietnamese)",
|
||||||
value: "vi-VN",
|
value: "vi-VN",
|
||||||
progress: 1,
|
progress: 0,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -27,43 +27,43 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Türkçe (Turkish)",
|
name: "Türkçe (Turkish)",
|
||||||
value: "tr-TR",
|
value: "tr-TR",
|
||||||
progress: 53,
|
progress: 62,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Svenska (Swedish)",
|
name: "Svenska (Swedish)",
|
||||||
value: "sv-SE",
|
value: "sv-SE",
|
||||||
progress: 94,
|
progress: 99,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "српски (Serbian)",
|
name: "српски (Serbian)",
|
||||||
value: "sr-SP",
|
value: "sr-SP",
|
||||||
progress: 32,
|
progress: 31,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Slovenian",
|
name: "Slovenian",
|
||||||
value: "sl-SI",
|
value: "sl-SI",
|
||||||
progress: 47,
|
progress: 49,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Slovak",
|
name: "Slovak",
|
||||||
value: "sk-SK",
|
value: "sk-SK",
|
||||||
progress: 93,
|
progress: 91,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Pусский (Russian)",
|
name: "Pусский (Russian)",
|
||||||
value: "ru-RU",
|
value: "ru-RU",
|
||||||
progress: 98,
|
progress: 99,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Română (Romanian)",
|
name: "Română (Romanian)",
|
||||||
value: "ro-RO",
|
value: "ro-RO",
|
||||||
progress: 42,
|
progress: 44,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -75,19 +75,19 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Português do Brasil (Brazilian Portuguese)",
|
name: "Português do Brasil (Brazilian Portuguese)",
|
||||||
value: "pt-BR",
|
value: "pt-BR",
|
||||||
progress: 97,
|
progress: 95,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Polski (Polish)",
|
name: "Polski (Polish)",
|
||||||
value: "pl-PL",
|
value: "pl-PL",
|
||||||
progress: 98,
|
progress: 100,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Norsk (Norwegian)",
|
name: "Norsk (Norwegian)",
|
||||||
value: "no-NO",
|
value: "no-NO",
|
||||||
progress: 99,
|
progress: 97,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -99,25 +99,25 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Latvian",
|
name: "Latvian",
|
||||||
value: "lv-LV",
|
value: "lv-LV",
|
||||||
progress: 1,
|
progress: 0,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Lithuanian",
|
name: "Lithuanian",
|
||||||
value: "lt-LT",
|
value: "lt-LT",
|
||||||
progress: 93,
|
progress: 91,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "한국어 (Korean)",
|
name: "한국어 (Korean)",
|
||||||
value: "ko-KR",
|
value: "ko-KR",
|
||||||
progress: 5,
|
progress: 3,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "日本語 (Japanese)",
|
name: "日本語 (Japanese)",
|
||||||
value: "ja-JP",
|
value: "ja-JP",
|
||||||
progress: 12,
|
progress: 11,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -135,25 +135,25 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Magyar (Hungarian)",
|
name: "Magyar (Hungarian)",
|
||||||
value: "hu-HU",
|
value: "hu-HU",
|
||||||
progress: 100,
|
progress: 98,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Croatian",
|
name: "Croatian",
|
||||||
value: "hr-HR",
|
value: "hr-HR",
|
||||||
progress: 93,
|
progress: 91,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "עברית (Hebrew)",
|
name: "עברית (Hebrew)",
|
||||||
value: "he-IL",
|
value: "he-IL",
|
||||||
progress: 97,
|
progress: 98,
|
||||||
dir: "rtl",
|
dir: "rtl",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Galician",
|
name: "Galician",
|
||||||
value: "gl-ES",
|
value: "gl-ES",
|
||||||
progress: 1,
|
progress: 3,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -165,19 +165,19 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "French, Canada",
|
name: "French, Canada",
|
||||||
value: "fr-CA",
|
value: "fr-CA",
|
||||||
progress: 97,
|
progress: 95,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Suomi (Finnish)",
|
name: "Suomi (Finnish)",
|
||||||
value: "fi-FI",
|
value: "fi-FI",
|
||||||
progress: 91,
|
progress: 89,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Español (Spanish)",
|
name: "Español (Spanish)",
|
||||||
value: "es-ES",
|
value: "es-ES",
|
||||||
progress: 79,
|
progress: 93,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -189,13 +189,13 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "British English",
|
name: "British English",
|
||||||
value: "en-GB",
|
value: "en-GB",
|
||||||
progress: 3,
|
progress: 2,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Ελληνικά (Greek)",
|
name: "Ελληνικά (Greek)",
|
||||||
value: "el-GR",
|
value: "el-GR",
|
||||||
progress: 34,
|
progress: 33,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -219,7 +219,7 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "Català (Catalan)",
|
name: "Català (Catalan)",
|
||||||
value: "ca-ES",
|
value: "ca-ES",
|
||||||
progress: 75,
|
progress: 74,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -231,13 +231,13 @@ export const LOCALES = [
|
|||||||
{
|
{
|
||||||
name: "العربية (Arabic)",
|
name: "العربية (Arabic)",
|
||||||
value: "ar-SA",
|
value: "ar-SA",
|
||||||
progress: 20,
|
progress: 18,
|
||||||
dir: "rtl",
|
dir: "rtl",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Afrikaans (Afrikaans)",
|
name: "Afrikaans (Afrikaans)",
|
||||||
value: "af-ZA",
|
value: "af-ZA",
|
||||||
progress: 92,
|
progress: 90,
|
||||||
dir: "ltr",
|
dir: "ltr",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Kanselleer",
|
"cancel": "Kanselleer",
|
||||||
"clear": "Maak skoon",
|
"clear": "Maak skoon",
|
||||||
"close": "Maak toe",
|
"close": "Maak toe",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "إلغاء",
|
"cancel": "إلغاء",
|
||||||
"clear": "مسح",
|
"clear": "مسح",
|
||||||
"close": "إغلاق",
|
"close": "إغلاق",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Събития на рецептата"
|
"recipe-events": "Събития на рецептата"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Откажи",
|
"cancel": "Откажи",
|
||||||
"clear": "Изчисти",
|
"clear": "Изчисти",
|
||||||
"close": "Затвори",
|
"close": "Затвори",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Esdeveniments de receptes"
|
"recipe-events": "Esdeveniments de receptes"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Anuŀla",
|
"cancel": "Anuŀla",
|
||||||
"clear": "Neteja",
|
"clear": "Neteja",
|
||||||
"close": "Tanca",
|
"close": "Tanca",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Zrušit",
|
"cancel": "Zrušit",
|
||||||
"clear": "Vymazat",
|
"clear": "Vymazat",
|
||||||
"close": "Zavřít",
|
"close": "Zavřít",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Hændelser for opskrifter"
|
"recipe-events": "Hændelser for opskrifter"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Annuller",
|
"cancel": "Annuller",
|
||||||
"clear": "Ryd",
|
"clear": "Ryd",
|
||||||
"close": "Luk",
|
"close": "Luk",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Rezept-Ereignisse"
|
"recipe-events": "Rezept-Ereignisse"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"clear": "Zurücksetzen",
|
"clear": "Zurücksetzen",
|
||||||
"close": "Schließen",
|
"close": "Schließen",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Άκυρο",
|
"cancel": "Άκυρο",
|
||||||
"clear": "Εκκαθάριση",
|
"clear": "Εκκαθάριση",
|
||||||
"close": "Κλείσιμο",
|
"close": "Κλείσιμο",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Eventos de receta"
|
"recipe-events": "Eventos de receta"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"clear": "Eliminar",
|
"clear": "Eliminar",
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"clear": "Tyhjennä",
|
"clear": "Tyhjennä",
|
||||||
"close": "Sulje",
|
"close": "Sulje",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Événements de recette"
|
"recipe-events": "Événements de recette"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Ajouter",
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"clear": "Effacer",
|
"clear": "Effacer",
|
||||||
"close": "Fermer",
|
"close": "Fermer",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Sauvegarder",
|
"save": "Sauvegarder",
|
||||||
"settings": "Paramètres",
|
"settings": "Paramètres",
|
||||||
"share": "Partager",
|
"share": "Partager",
|
||||||
"show-all": "Show All",
|
"show-all": "Tout afficher",
|
||||||
"shuffle": "Mélanger",
|
"shuffle": "Mélanger",
|
||||||
"sort": "Trier",
|
"sort": "Trier",
|
||||||
"sort-alphabetically": "Alphabétique",
|
"sort-alphabetically": "Alphabétique",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Événements de recette"
|
"recipe-events": "Événements de recette"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Ajouter",
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"clear": "Effacer",
|
"clear": "Effacer",
|
||||||
"close": "Fermer",
|
"close": "Fermer",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Sauvegarder",
|
"save": "Sauvegarder",
|
||||||
"settings": "Paramètres",
|
"settings": "Paramètres",
|
||||||
"share": "Partager",
|
"share": "Partager",
|
||||||
"show-all": "Show All",
|
"show-all": "Tout afficher",
|
||||||
"shuffle": "Aléatoire",
|
"shuffle": "Aléatoire",
|
||||||
"sort": "Trier",
|
"sort": "Trier",
|
||||||
"sort-alphabetically": "Alphabétique",
|
"sort-alphabetically": "Alphabétique",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "אירועי מתכון"
|
"recipe-events": "אירועי מתכון"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "ביטול",
|
"cancel": "ביטול",
|
||||||
"clear": "נקה",
|
"clear": "נקה",
|
||||||
"close": "סגירה",
|
"close": "סגירה",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Odustani",
|
"cancel": "Odustani",
|
||||||
"clear": "Očisti",
|
"clear": "Očisti",
|
||||||
"close": "Zatvori",
|
"close": "Zatvori",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recept esemény"
|
"recipe-events": "Recept esemény"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Mégsem",
|
"cancel": "Mégsem",
|
||||||
"clear": "Törlés",
|
"clear": "Törlés",
|
||||||
"close": "Bezár",
|
"close": "Bezár",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Eventi di ricette"
|
"recipe-events": "Eventi di ricette"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Aggiungi",
|
||||||
"cancel": "Cancella",
|
"cancel": "Cancella",
|
||||||
"clear": "Resetta",
|
"clear": "Resetta",
|
||||||
"close": "Chiudi",
|
"close": "Chiudi",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Salva",
|
"save": "Salva",
|
||||||
"settings": "Impostazioni",
|
"settings": "Impostazioni",
|
||||||
"share": "Condividi",
|
"share": "Condividi",
|
||||||
"show-all": "Show All",
|
"show-all": "Mostra tutto",
|
||||||
"shuffle": "Casuale",
|
"shuffle": "Casuale",
|
||||||
"sort": "Ordina",
|
"sort": "Ordina",
|
||||||
"sort-alphabetically": "Alfabetico",
|
"sort-alphabetically": "Alfabetico",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"clear": "クリア",
|
"clear": "クリア",
|
||||||
"close": "閉じる",
|
"close": "閉じる",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Atšaukti",
|
"cancel": "Atšaukti",
|
||||||
"clear": "Išvalyti",
|
"clear": "Išvalyti",
|
||||||
"close": "Uždaryti",
|
"close": "Uždaryti",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recept gebeurtenissen"
|
"recipe-events": "Recept gebeurtenissen"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Voeg toe",
|
||||||
"cancel": "Annuleren",
|
"cancel": "Annuleren",
|
||||||
"clear": "Wissen",
|
"clear": "Wissen",
|
||||||
"close": "Sluiten",
|
"close": "Sluiten",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Oppskriftshendelser"
|
"recipe-events": "Oppskriftshendelser"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Avbryt",
|
"cancel": "Avbryt",
|
||||||
"clear": "Tøm",
|
"clear": "Tøm",
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
|
|||||||
@@ -77,9 +77,10 @@
|
|||||||
"tag-events": "Zdarzenia tagów",
|
"tag-events": "Zdarzenia tagów",
|
||||||
"category-events": "Wydarzenia kategorii",
|
"category-events": "Wydarzenia kategorii",
|
||||||
"when-a-new-user-joins-your-group": "Kiedy nowy użytkownik dołączy do Twojej grupy",
|
"when-a-new-user-joins-your-group": "Kiedy nowy użytkownik dołączy do Twojej grupy",
|
||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Zdarzenia Przepisów"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Dodaj",
|
||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
"clear": "Wyczyść",
|
"clear": "Wyczyść",
|
||||||
"close": "Zamknij",
|
"close": "Zamknij",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Zapisz",
|
"save": "Zapisz",
|
||||||
"settings": "Ustawienia",
|
"settings": "Ustawienia",
|
||||||
"share": "Udostępnij",
|
"share": "Udostępnij",
|
||||||
"show-all": "Show All",
|
"show-all": "Pokaż wszystko",
|
||||||
"shuffle": "Pomieszaj",
|
"shuffle": "Pomieszaj",
|
||||||
"sort": "Sortuj",
|
"sort": "Sortuj",
|
||||||
"sort-alphabetically": "Alfabetyczne",
|
"sort-alphabetically": "Alfabetyczne",
|
||||||
@@ -495,8 +496,8 @@
|
|||||||
"cook-mode": "Tryb Gotowania",
|
"cook-mode": "Tryb Gotowania",
|
||||||
"link-ingredients": "Podłącz składniki",
|
"link-ingredients": "Podłącz składniki",
|
||||||
"merge-above": "Scal z powyższym",
|
"merge-above": "Scal z powyższym",
|
||||||
"move-to-bottom": "Move To Bottom",
|
"move-to-bottom": "Przesuń na sam dół",
|
||||||
"move-to-top": "Move To Top",
|
"move-to-top": "Przesuń na samą górę",
|
||||||
"reset-scale": "Zresetuj Skalę",
|
"reset-scale": "Zresetuj Skalę",
|
||||||
"decrease-scale-label": "Zmniejsz Skalę o 1",
|
"decrease-scale-label": "Zmniejsz Skalę o 1",
|
||||||
"increase-scale-label": "Zwiększ Skalę o 1",
|
"increase-scale-label": "Zwiększ Skalę o 1",
|
||||||
@@ -602,7 +603,7 @@
|
|||||||
"import-summary": "Podsumowanie importu",
|
"import-summary": "Podsumowanie importu",
|
||||||
"partial-backup": "Częściowa kopia zapasowa",
|
"partial-backup": "Częściowa kopia zapasowa",
|
||||||
"unable-to-delete-backup": "Nie można usunąć kopii zapasowej.",
|
"unable-to-delete-backup": "Nie można usunąć kopii zapasowej.",
|
||||||
"experimental-description": "Backups are total snapshots of the database and data directory of the site. This includes all data and cannot be set to exclude subsets of data. You can think of this as a snapshot of Mealie at a specific time. These serve as a database agnostic way to export and import data, or back up the site to an external location.",
|
"experimental-description": "Kopie zapasowe to całkowite zrzuty bazy danych i katalogu danych witryny. Obejmują one wszystkie dane i nie można nic ustawić, aby wykluczyć podzbiory danych. Traktuj je jako stan całego Mealie w określonym momencie czasu. Backupy to agnostyczny sposób eksportowania i importowania danych oraz sposób na zrobienie kopii witryny do zewnętrznej lokalizacji.",
|
||||||
"backup-restore": "Przywróć kopie",
|
"backup-restore": "Przywróć kopie",
|
||||||
"back-restore-description": "Przywracanie tej kopii zapasowej nadpisze wszystkie aktualne dane w bazie danych i w katalogu danych i zastąpi je zawartością tej kopii zapasowej. {cannot-be-undone} Jeśli przywrócenie zakończy się pomyślnie, zostaniesz wylogowany.",
|
"back-restore-description": "Przywracanie tej kopii zapasowej nadpisze wszystkie aktualne dane w bazie danych i w katalogu danych i zastąpi je zawartością tej kopii zapasowej. {cannot-be-undone} Jeśli przywrócenie zakończy się pomyślnie, zostaniesz wylogowany.",
|
||||||
"cannot-be-undone": "Tej czynności nie można cofnąć - należy zachować ostrożność.",
|
"cannot-be-undone": "Tej czynności nie można cofnąć - należy zachować ostrożność.",
|
||||||
@@ -872,7 +873,7 @@
|
|||||||
"you-are-not-allowed-to-create-a-user": "Nie masz uprawnień do tworzenia użytkowników",
|
"you-are-not-allowed-to-create-a-user": "Nie masz uprawnień do tworzenia użytkowników",
|
||||||
"you-are-not-allowed-to-delete-this-user": "Nie masz uprawnień do usuwania użytkowników",
|
"you-are-not-allowed-to-delete-this-user": "Nie masz uprawnień do usuwania użytkowników",
|
||||||
"enable-advanced-content": "Włącz zaawansowane ustawienia",
|
"enable-advanced-content": "Włącz zaawansowane ustawienia",
|
||||||
"enable-advanced-content-description": "Włącza funkcje zaawansowane takie jak skalowanie przepisów, klucze API, webhooki i zarządzanie danymi. Nie mart się, opcję tą można później zmienić",
|
"enable-advanced-content-description": "Włącza zaawansowane funkcje, takie jak skalowanie receptur, klucze API, Webhooki i zarządzanie danymi. Nie martw się, zawsze możesz to zmienić później",
|
||||||
"favorite-recipes": "Ulubione przepisy",
|
"favorite-recipes": "Ulubione przepisy",
|
||||||
"email-or-username": "E-mail lub nazwa użytkownika",
|
"email-or-username": "E-mail lub nazwa użytkownika",
|
||||||
"remember-me": "Zapamiętaj",
|
"remember-me": "Zapamiętaj",
|
||||||
@@ -949,7 +950,7 @@
|
|||||||
"example-unit-singular": "np. Łyżka stołowa",
|
"example-unit-singular": "np. Łyżka stołowa",
|
||||||
"example-unit-plural": "np. Łyżki stołowe",
|
"example-unit-plural": "np. Łyżki stołowe",
|
||||||
"example-unit-abbreviation-singular": "na przykład: Łyżka stołowa",
|
"example-unit-abbreviation-singular": "na przykład: Łyżka stołowa",
|
||||||
"example-unit-abbreviation-plural": "ex: Tbsps"
|
"example-unit-abbreviation-plural": "na przykład: Łyżka stołowa"
|
||||||
},
|
},
|
||||||
"labels": {
|
"labels": {
|
||||||
"seed-dialog-text": "Wypełnij bazę zwyczajowymi etykietami dla wybranego języka.",
|
"seed-dialog-text": "Wypełnij bazę zwyczajowymi etykietami dla wybranego języka.",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Eventos da Receita"
|
"recipe-events": "Eventos da Receita"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"clear": "Limpar",
|
"clear": "Limpar",
|
||||||
"close": "Fechar",
|
"close": "Fechar",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Eventos de receita"
|
"recipe-events": "Eventos de receita"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Adicionar",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"clear": "Limpar",
|
"clear": "Limpar",
|
||||||
"close": "Fechar",
|
"close": "Fechar",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Evenimente rețetă"
|
"recipe-events": "Evenimente rețetă"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Anulează",
|
"cancel": "Anulează",
|
||||||
"clear": "Șterge",
|
"clear": "Șterge",
|
||||||
"close": "Închide",
|
"close": "Închide",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "События Рецепта"
|
"recipe-events": "События Рецепта"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Отмена",
|
"cancel": "Отмена",
|
||||||
"clear": "Очистить",
|
"clear": "Очистить",
|
||||||
"close": "Закрыть",
|
"close": "Закрыть",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Zrušiť",
|
"cancel": "Zrušiť",
|
||||||
"clear": "Vymazať",
|
"clear": "Vymazať",
|
||||||
"close": "Zavrieť",
|
"close": "Zavrieť",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Prekliči",
|
"cancel": "Prekliči",
|
||||||
"clear": "Počisti",
|
"clear": "Počisti",
|
||||||
"close": "Zapri",
|
"close": "Zapri",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Shrani",
|
"save": "Shrani",
|
||||||
"settings": "Nastavitve",
|
"settings": "Nastavitve",
|
||||||
"share": "Deli",
|
"share": "Deli",
|
||||||
"show-all": "Show All",
|
"show-all": "Prikaži vse",
|
||||||
"shuffle": "Naključno",
|
"shuffle": "Naključno",
|
||||||
"sort": "Razvrsti",
|
"sort": "Razvrsti",
|
||||||
"sort-alphabetically": "Po abecedi",
|
"sort-alphabetically": "Po abecedi",
|
||||||
@@ -198,8 +199,8 @@
|
|||||||
"export-all": "Izvozi vse",
|
"export-all": "Izvozi vse",
|
||||||
"refresh": "Osveži",
|
"refresh": "Osveži",
|
||||||
"upload-file": "Naloži datoteko",
|
"upload-file": "Naloži datoteko",
|
||||||
"created-on-date": "Created on: {0}",
|
"created-on-date": "Ustvarjeno dne: {0}",
|
||||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
"unsaved-changes": "Imate neohranjene spremembe. Ali želite shraniti pred odhodom? V redu, če želite shraniti, Prekliči, če želite zavreči spremembe.",
|
||||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||||
},
|
},
|
||||||
@@ -294,8 +295,8 @@
|
|||||||
"type-any": "Katerikoli",
|
"type-any": "Katerikoli",
|
||||||
"day-any": "Katerikoli",
|
"day-any": "Katerikoli",
|
||||||
"editor": "Editor",
|
"editor": "Editor",
|
||||||
"meal-recipe": "Meal Recipe",
|
"meal-recipe": "Recept za obrok",
|
||||||
"meal-title": "Meal Title",
|
"meal-title": "Naslov obroka",
|
||||||
"meal-note": "Meal Note",
|
"meal-note": "Meal Note",
|
||||||
"note-only": "Note Only",
|
"note-only": "Note Only",
|
||||||
"random-meal": "Random Meal",
|
"random-meal": "Random Meal",
|
||||||
@@ -354,8 +355,8 @@
|
|||||||
"tag-all-recipes": "Tag all recipes with {tag-name} tag",
|
"tag-all-recipes": "Tag all recipes with {tag-name} tag",
|
||||||
"nextcloud-text": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.",
|
"nextcloud-text": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.",
|
||||||
"chowdown-text": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below",
|
"chowdown-text": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below",
|
||||||
"recipe-1": "Recipe 1",
|
"recipe-1": "Recept 1",
|
||||||
"recipe-2": "Recipe 2",
|
"recipe-2": "Recept 2",
|
||||||
"paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.",
|
"paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.",
|
||||||
"mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.",
|
"mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.",
|
||||||
"plantoeat": {
|
"plantoeat": {
|
||||||
@@ -531,7 +532,7 @@
|
|||||||
"select-one-of-the-various-ways-to-create-a-recipe": "Select one of the various ways to create a recipe",
|
"select-one-of-the-various-ways-to-create-a-recipe": "Select one of the various ways to create a recipe",
|
||||||
"looking-for-migrations": "Looking For Migrations?",
|
"looking-for-migrations": "Looking For Migrations?",
|
||||||
"import-with-url": "Import with URL",
|
"import-with-url": "Import with URL",
|
||||||
"create-recipe": "Create Recipe",
|
"create-recipe": "Ustvari recept",
|
||||||
"import-with-zip": "Import with .zip",
|
"import-with-zip": "Import with .zip",
|
||||||
"create-recipe-from-an-image": "Create recipe from an image",
|
"create-recipe-from-an-image": "Create recipe from an image",
|
||||||
"bulk-url-import": "Bulk URL Import",
|
"bulk-url-import": "Bulk URL Import",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Откажи",
|
"cancel": "Откажи",
|
||||||
"clear": "Обриши",
|
"clear": "Обриши",
|
||||||
"close": "Затвори",
|
"close": "Затвори",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recepthändelser"
|
"recipe-events": "Recepthändelser"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Avbryt",
|
"cancel": "Avbryt",
|
||||||
"clear": "Rensa",
|
"clear": "Rensa",
|
||||||
"close": "Stäng",
|
"close": "Stäng",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Ekle",
|
||||||
"cancel": "İptal",
|
"cancel": "İptal",
|
||||||
"clear": "Temizle",
|
"clear": "Temizle",
|
||||||
"close": "Kapat",
|
"close": "Kapat",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Kaydet",
|
"save": "Kaydet",
|
||||||
"settings": "Ayarlar",
|
"settings": "Ayarlar",
|
||||||
"share": "Paylaş",
|
"share": "Paylaş",
|
||||||
"show-all": "Show All",
|
"show-all": "Tümünü Göster",
|
||||||
"shuffle": "Karıştır",
|
"shuffle": "Karıştır",
|
||||||
"sort": "Sırala",
|
"sort": "Sırala",
|
||||||
"sort-alphabetically": "Alfabetik",
|
"sort-alphabetically": "Alfabetik",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Події рецепту"
|
"recipe-events": "Події рецепту"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Додати",
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"clear": "Очистити",
|
"clear": "Очистити",
|
||||||
"close": "Закрити",
|
"close": "Закрити",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "Зберегти",
|
"save": "Зберегти",
|
||||||
"settings": "Налаштування",
|
"settings": "Налаштування",
|
||||||
"share": "Поділитись",
|
"share": "Поділитись",
|
||||||
"show-all": "Show All",
|
"show-all": "Показати все",
|
||||||
"shuffle": "Перемішати",
|
"shuffle": "Перемішати",
|
||||||
"sort": "Сортувати",
|
"sort": "Сортувати",
|
||||||
"sort-alphabetically": "За алфавітом",
|
"sort-alphabetically": "За алфавітом",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "食谱事件"
|
"recipe-events": "食谱事件"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "添加",
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"clear": "清空",
|
"clear": "清空",
|
||||||
"close": "关闭",
|
"close": "关闭",
|
||||||
@@ -142,7 +143,7 @@
|
|||||||
"save": "保存",
|
"save": "保存",
|
||||||
"settings": "设定",
|
"settings": "设定",
|
||||||
"share": "分享",
|
"share": "分享",
|
||||||
"show-all": "Show All",
|
"show-all": "全部显示",
|
||||||
"shuffle": "随机",
|
"shuffle": "随机",
|
||||||
"sort": "排序",
|
"sort": "排序",
|
||||||
"sort-alphabetically": "按字母顺序排序",
|
"sort-alphabetically": "按字母顺序排序",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
"recipe-events": "Recipe Events"
|
"recipe-events": "Recipe Events"
|
||||||
},
|
},
|
||||||
"general": {
|
"general": {
|
||||||
|
"add": "Add",
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"clear": "清除",
|
"clear": "清除",
|
||||||
"close": "關閉",
|
"close": "關閉",
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
:key="mealplan.id"
|
:key="mealplan.id"
|
||||||
:recipe-id="mealplan.recipe ? mealplan.recipe.id : ''"
|
:recipe-id="mealplan.recipe ? mealplan.recipe.id : ''"
|
||||||
class="mb-2"
|
class="mb-2"
|
||||||
:route="mealplan.recipe ? true : false"
|
|
||||||
:rating="mealplan.recipe ? mealplan.recipe.rating : 0"
|
:rating="mealplan.recipe ? mealplan.recipe.rating : 0"
|
||||||
:slug="mealplan.recipe ? mealplan.recipe.slug : mealplan.title"
|
:slug="mealplan.recipe ? mealplan.recipe.slug : mealplan.title"
|
||||||
:description="mealplan.recipe ? mealplan.recipe.description : mealplan.text"
|
:description="mealplan.recipe ? mealplan.recipe.description : mealplan.text"
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
<template #icon> {{ $globals.icons.tags }} </template>
|
<template #icon> {{ $globals.icons.tags }} </template>
|
||||||
{{ $t('shopping-list.reorder-labels') }}
|
{{ $t('shopping-list.reorder-labels') }}
|
||||||
</BaseButton>
|
</BaseButton>
|
||||||
<BaseButton create @click="createEditorOpen = true" />
|
<BaseButton create @click="createEditorOpen = true" > {{ $t('general.add') }} </BaseButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Action Bar -->
|
<!-- Action Bar -->
|
||||||
|
|||||||
2
frontend/types/components.d.ts
vendored
2
frontend/types/components.d.ts
vendored
@@ -1,4 +1,4 @@
|
|||||||
// This Code is auto generated by gen_global_components.py
|
// This Code is auto generated by gen_ts_types.py
|
||||||
import AdvancedOnly from "@/components/global/AdvancedOnly.vue";
|
import AdvancedOnly from "@/components/global/AdvancedOnly.vue";
|
||||||
import AppButtonCopy from "@/components/global/AppButtonCopy.vue";
|
import AppButtonCopy from "@/components/global/AppButtonCopy.vue";
|
||||||
import AppButtonUpload from "@/components/global/AppButtonUpload.vue";
|
import AppButtonUpload from "@/components/global/AppButtonUpload.vue";
|
||||||
|
|||||||
@@ -24,11 +24,8 @@ def search_user(conn: LDAPObject, username: str) -> list[tuple[str, dict[str, li
|
|||||||
id_attribute=settings.LDAP_ID_ATTRIBUTE, mail_attribute=settings.LDAP_MAIL_ATTRIBUTE, input=username
|
id_attribute=settings.LDAP_ID_ATTRIBUTE, mail_attribute=settings.LDAP_MAIL_ATTRIBUTE, input=username
|
||||||
)
|
)
|
||||||
# Don't assume the provided search filter has (|({id_attribute}={input})({mail_attribute}={input}))
|
# Don't assume the provided search filter has (|({id_attribute}={input})({mail_attribute}={input}))
|
||||||
search_filter = "(&(|({id_attribute}={input})({mail_attribute}={input})){filter})".format(
|
search_filter = (
|
||||||
id_attribute=settings.LDAP_ID_ATTRIBUTE,
|
f"(&(|({settings.LDAP_ID_ATTRIBUTE}={username})({settings.LDAP_MAIL_ATTRIBUTE}={username})){user_filter})"
|
||||||
mail_attribute=settings.LDAP_MAIL_ATTRIBUTE,
|
|
||||||
input=username,
|
|
||||||
filter=user_filter,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
user_entry: list[tuple[str, dict[str, list[bytes]]]] | None = None
|
user_entry: list[tuple[str, dict[str, list[bytes]]]] | None = None
|
||||||
|
|||||||
@@ -1,38 +1,47 @@
|
|||||||
def validate_locale(locale: str) -> bool:
|
def validate_locale(locale: str) -> bool:
|
||||||
valid = {
|
valid = {
|
||||||
"el-GR",
|
# CODE_GEN_ID: MESSAGE_LOCALES
|
||||||
"it-IT",
|
|
||||||
"ko-KR",
|
|
||||||
"es-ES",
|
|
||||||
"ja-JP",
|
|
||||||
"zh-CN",
|
|
||||||
"tr-TR",
|
|
||||||
"ar-SA",
|
|
||||||
"hu-HU",
|
|
||||||
"pt-PT",
|
|
||||||
"no-NO",
|
|
||||||
"sv-SE",
|
|
||||||
"ro-RO",
|
|
||||||
"sk-SK",
|
|
||||||
"uk-UA",
|
|
||||||
"fr-CA",
|
|
||||||
"pl-PL",
|
|
||||||
"da-DK",
|
|
||||||
"pt-BR",
|
|
||||||
"de-DE",
|
|
||||||
"ca-ES",
|
|
||||||
"sr-SP",
|
|
||||||
"cs-CZ",
|
|
||||||
"fr-FR",
|
|
||||||
"zh-TW",
|
|
||||||
"af-ZA",
|
"af-ZA",
|
||||||
"ru-RU",
|
"ar-SA",
|
||||||
"he-IL",
|
"bg-BG",
|
||||||
"nl-NL",
|
"ca-ES",
|
||||||
"en-US",
|
"cs-CZ",
|
||||||
|
"da-DK",
|
||||||
|
"de-DE",
|
||||||
|
"el-GR",
|
||||||
"en-GB",
|
"en-GB",
|
||||||
|
"en-US",
|
||||||
|
"es-ES",
|
||||||
"fi-FI",
|
"fi-FI",
|
||||||
|
"fr-CA",
|
||||||
|
"fr-FR",
|
||||||
|
"gl-ES",
|
||||||
|
"he-IL",
|
||||||
|
"hr-HR",
|
||||||
|
"hu-HU",
|
||||||
|
"is-IS",
|
||||||
|
"it-IT",
|
||||||
|
"ja-JP",
|
||||||
|
"ko-KR",
|
||||||
|
"lt-LT",
|
||||||
|
"lv-LV",
|
||||||
|
"nl-NL",
|
||||||
|
"no-NO",
|
||||||
|
"pl-PL",
|
||||||
|
"pt-BR",
|
||||||
|
"pt-PT",
|
||||||
|
"ro-RO",
|
||||||
|
"ru-RU",
|
||||||
|
"sk-SK",
|
||||||
|
"sl-SI",
|
||||||
|
"sr-SP",
|
||||||
|
"sv-SE",
|
||||||
|
"tr-TR",
|
||||||
|
"uk-UA",
|
||||||
"vi-VN",
|
"vi-VN",
|
||||||
|
"zh-CN",
|
||||||
|
"zh-TW",
|
||||||
|
# END: MESSAGE_LOCALES
|
||||||
}
|
}
|
||||||
|
|
||||||
return locale in valid
|
return locale in valid
|
||||||
|
|||||||
118
poetry.lock
generated
118
poetry.lock
generated
@@ -89,13 +89,13 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "apprise"
|
name = "apprise"
|
||||||
version = "1.7.3"
|
version = "1.7.4"
|
||||||
description = "Push Notifications that work with just about every platform!"
|
description = "Push Notifications that work with just about every platform!"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
{file = "apprise-1.7.3-py3-none-any.whl", hash = "sha256:d071ff2a12dd57c783edc0aab375e8606f2fb527b1e3afbc8750f0190c8928f4"},
|
{file = "apprise-1.7.4-py3-none-any.whl", hash = "sha256:71edb0f29532c0c35b6c52d882880f1649f8bd1bdc97c7480fda3e1358603325"},
|
||||||
{file = "apprise-1.7.3.tar.gz", hash = "sha256:31e2a639407bb8d266249fc075ff317e9d34ff5951c6e16bfeefddc2af5fe84c"},
|
{file = "apprise-1.7.4.tar.gz", hash = "sha256:ef5e830051140d4228a759c5bc2d6857bcc7f8664df3e44f30f64617ce0c7a73"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -1270,38 +1270,38 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mypy"
|
name = "mypy"
|
||||||
version = "1.8.0"
|
version = "1.9.0"
|
||||||
description = "Optional static typing for Python"
|
description = "Optional static typing for Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"},
|
{file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"},
|
||||||
{file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"},
|
{file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"},
|
||||||
{file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"},
|
{file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"},
|
||||||
{file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"},
|
{file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"},
|
||||||
{file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"},
|
{file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"},
|
||||||
{file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"},
|
{file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"},
|
||||||
{file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"},
|
{file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"},
|
||||||
{file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"},
|
{file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"},
|
||||||
{file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"},
|
{file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"},
|
||||||
{file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"},
|
{file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"},
|
||||||
{file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"},
|
{file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"},
|
||||||
{file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"},
|
{file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"},
|
||||||
{file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"},
|
{file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"},
|
||||||
{file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"},
|
{file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"},
|
||||||
{file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"},
|
{file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"},
|
||||||
{file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"},
|
{file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"},
|
||||||
{file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"},
|
{file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"},
|
||||||
{file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"},
|
{file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"},
|
||||||
{file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"},
|
{file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"},
|
||||||
{file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"},
|
{file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"},
|
||||||
{file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"},
|
{file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"},
|
||||||
{file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"},
|
{file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"},
|
||||||
{file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"},
|
{file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"},
|
||||||
{file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"},
|
{file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"},
|
||||||
{file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"},
|
{file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"},
|
||||||
{file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"},
|
{file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"},
|
||||||
{file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"},
|
{file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -1949,13 +1949,13 @@ rdflib = "*"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest"
|
name = "pytest"
|
||||||
version = "8.0.2"
|
version = "8.1.1"
|
||||||
description = "pytest: simple powerful testing with Python"
|
description = "pytest: simple powerful testing with Python"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"},
|
{file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"},
|
||||||
{file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"},
|
{file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -1963,11 +1963,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
|||||||
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
|
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
|
||||||
iniconfig = "*"
|
iniconfig = "*"
|
||||||
packaging = "*"
|
packaging = "*"
|
||||||
pluggy = ">=1.3.0,<2.0"
|
pluggy = ">=1.4,<2.0"
|
||||||
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
|
tomli = {version = ">=1", markers = "python_version < \"3.11\""}
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-asyncio"
|
name = "pytest-asyncio"
|
||||||
@@ -2468,28 +2468,28 @@ pyasn1 = ">=0.1.3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.3.0"
|
version = "0.3.2"
|
||||||
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"
|
||||||
files = [
|
files = [
|
||||||
{file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7deb528029bacf845bdbb3dbb2927d8ef9b4356a5e731b10eef171e3f0a85944"},
|
{file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"},
|
||||||
{file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e1e0d4381ca88fb2b73ea0766008e703f33f460295de658f5467f6f229658c19"},
|
{file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f7dbba46e2827dfcb0f0cc55fba8e96ba7c8700e0a866eb8cef7d1d66c25dcb"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23dbb808e2f1d68eeadd5f655485e235c102ac6f12ad31505804edced2a5ae77"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ef655c51f41d5fa879f98e40c90072b567c666a7114fa2d9fe004dffba00932"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d0d3d7ef3d4f06433d592e5f7d813314a34601e6c5be8481cccb7fa760aa243e"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b08b356d06a792e49a12074b62222f9d4ea2a11dca9da9f68163b28c71bf1dd4"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9343690f95710f8cf251bee1013bf43030072b9f8d012fbed6ad702ef70d360a"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"},
|
||||||
{file = "ruff-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1f3ed501a42f60f4dedb7805fa8d4534e78b4e196f536bac926f805f0743d49"},
|
{file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"},
|
||||||
{file = "ruff-0.3.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cc30a9053ff2f1ffb505a585797c23434d5f6c838bacfe206c0e6cf38c921a1e"},
|
{file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"},
|
||||||
{file = "ruff-0.3.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5da894a29ec018a8293d3d17c797e73b374773943e8369cfc50495573d396933"},
|
{file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"},
|
||||||
{file = "ruff-0.3.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:755c22536d7f1889be25f2baf6fedd019d0c51d079e8417d4441159f3bcd30c2"},
|
{file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"},
|
||||||
{file = "ruff-0.3.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd73fe7f4c28d317855da6a7bc4aa29a1500320818dd8f27df95f70a01b8171f"},
|
{file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"},
|
||||||
{file = "ruff-0.3.0-py3-none-win32.whl", hash = "sha256:19eacceb4c9406f6c41af806418a26fdb23120dfe53583df76d1401c92b7c14b"},
|
{file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"},
|
||||||
{file = "ruff-0.3.0-py3-none-win_amd64.whl", hash = "sha256:128265876c1d703e5f5e5a4543bd8be47c73a9ba223fd3989d4aa87dd06f312f"},
|
{file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"},
|
||||||
{file = "ruff-0.3.0-py3-none-win_arm64.whl", hash = "sha256:e3a4a6d46aef0a84b74fcd201a4401ea9a6cd85614f6a9435f2d33dd8cefbf83"},
|
{file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"},
|
||||||
{file = "ruff-0.3.0.tar.gz", hash = "sha256:0886184ba2618d815067cf43e005388967b67ab9c80df52b32ec1152ab49f53a"},
|
{file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2776,13 +2776,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "uvicorn"
|
name = "uvicorn"
|
||||||
version = "0.27.1"
|
version = "0.28.0"
|
||||||
description = "The lightning-fast ASGI server."
|
description = "The lightning-fast ASGI server."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "uvicorn-0.27.1-py3-none-any.whl", hash = "sha256:5c89da2f3895767472a35556e539fd59f7edbe9b1e9c0e1c99eebeadc61838e4"},
|
{file = "uvicorn-0.28.0-py3-none-any.whl", hash = "sha256:6623abbbe6176204a4226e67607b4d52cc60ff62cda0ff177613645cefa2ece1"},
|
||||||
{file = "uvicorn-0.27.1.tar.gz", hash = "sha256:3d9a267296243532db80c83a959a3400502165ade2c1338dea4e67915fd4745a"},
|
{file = "uvicorn-0.28.0.tar.gz", hash = "sha256:cab4473b5d1eaeb5a0f6375ac4bc85007ffc75c3cc1768816d9e5d589857b067"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@@ -3040,4 +3040,4 @@ pgsql = ["psycopg2-binary"]
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.10"
|
python-versions = "^3.10"
|
||||||
content-hash = "9576c2fb9e9274b65b13e01fd962d59dafd9a1d2f054e8b0407b3e6c0695d0bb"
|
content-hash = "fe771c620ec99c7392b8269f206e2d99ae492988002b8814fa44f1dba1bafe28"
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ python-slugify = "^8.0.0"
|
|||||||
recipe-scrapers = "^14.53.0"
|
recipe-scrapers = "^14.53.0"
|
||||||
requests = "^2.31.0"
|
requests = "^2.31.0"
|
||||||
tzdata = "^2023.4"
|
tzdata = "^2023.4"
|
||||||
uvicorn = { extras = ["standard"], version = "^0.27.0" }
|
uvicorn = { extras = ["standard"], version = "^0.28.0" }
|
||||||
beautifulsoup4 = "^4.11.2"
|
beautifulsoup4 = "^4.11.2"
|
||||||
isodate = "^0.6.1"
|
isodate = "^0.6.1"
|
||||||
text-unidecode = "^1.3"
|
text-unidecode = "^1.3"
|
||||||
@@ -112,22 +112,7 @@ strict_optional = true
|
|||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 120
|
line-length = 120
|
||||||
output-format = "text"
|
output-format = "concise"
|
||||||
|
|
||||||
# Enable Pyflakes `E` and `F` codes by default.
|
|
||||||
ignore = ["F403", "TID252", "B008"]
|
|
||||||
select = [
|
|
||||||
"E", # pycodestyles
|
|
||||||
"F", # pyflakes
|
|
||||||
"I", # isort
|
|
||||||
"T", # flake8-print
|
|
||||||
"UP", # pyupgrade
|
|
||||||
"B", # flake8-bugbear
|
|
||||||
# "ANN", # flake8-annotations
|
|
||||||
# "C", # McCabe complexity
|
|
||||||
# "RUF", # Ruff specific
|
|
||||||
# "BLE", # blind-except
|
|
||||||
]
|
|
||||||
|
|
||||||
# Exclude a variety of commonly ignored directories.
|
# Exclude a variety of commonly ignored directories.
|
||||||
exclude = [
|
exclude = [
|
||||||
@@ -155,9 +140,25 @@ exclude = [
|
|||||||
# Assume Python 3.10.
|
# Assume Python 3.10.
|
||||||
target-version = "py310"
|
target-version = "py310"
|
||||||
|
|
||||||
[tool.ruff.per-file-ignores]
|
[tool.ruff.lint]
|
||||||
|
# Enable Pyflakes `E` and `F` codes by default.
|
||||||
|
ignore = ["F403", "TID252", "B008"]
|
||||||
|
select = [
|
||||||
|
"E", # pycodestyles
|
||||||
|
"F", # pyflakes
|
||||||
|
"I", # isort
|
||||||
|
"T", # flake8-print
|
||||||
|
"UP", # pyupgrade
|
||||||
|
"B", # flake8-bugbear
|
||||||
|
# "ANN", # flake8-annotations
|
||||||
|
# "C", # McCabe complexity
|
||||||
|
# "RUF", # Ruff specific
|
||||||
|
# "BLE", # blind-except
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.ruff.lint.per-file-ignores]
|
||||||
"__init__.py" = ["E402", "E501"]
|
"__init__.py" = ["E402", "E501"]
|
||||||
|
|
||||||
[tool.ruff.mccabe]
|
[tool.ruff.lint.mccabe]
|
||||||
# Unlike Flake8, default to a complexity level of 10.
|
# Unlike Flake8, default to a complexity level of 10.
|
||||||
max-complexity = 10
|
max-complexity = 10
|
||||||
|
|||||||
Reference in New Issue
Block a user