mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-01 04:10:06 -05:00
Merge branch 'develop' into feature/importer_to_vue
# Conflicts: # vue/package.json
This commit is contained in:
2
boot.sh
2
boot.sh
@@ -34,7 +34,7 @@ if [ "${DB_ENGINE}" != 'django.db.backends.sqlite3' ]; then
|
|||||||
display_warning "The environment variable 'POSTGRES_PASSWORD' is not set but REQUIRED for running Tandoor!"
|
display_warning "The environment variable 'POSTGRES_PASSWORD' is not set but REQUIRED for running Tandoor!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while pg_isready --host=${POSTGRES_HOST} --port=${POSTGRES_PORT} -q; status=$?; attempt=$((attempt+1)); [ $status -ne 0 ] && [ $attempt -le $max_attempts ]; do
|
while pg_isready --host=${POSTGRES_HOST} --port=${POSTGRES_PORT} --user=${POSTGRES_USER} -q; status=$?; attempt=$((attempt+1)); [ $status -ne 0 ] && [ $attempt -le $max_attempts ]; do
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ admin.site.register(Ingredient, IngredientAdmin)
|
|||||||
|
|
||||||
class CommentAdmin(admin.ModelAdmin):
|
class CommentAdmin(admin.ModelAdmin):
|
||||||
list_display = ('recipe', 'name', 'created_at')
|
list_display = ('recipe', 'name', 'created_at')
|
||||||
search_fields = ('text', 'user__username')
|
search_fields = ('text', 'created_by__username')
|
||||||
date_hierarchy = 'created_at'
|
date_hierarchy = 'created_at'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-11-04 12:31+0100\n"
|
"POT-Creation-Date: 2021-11-04 12:31+0100\n"
|
||||||
"PO-Revision-Date: 2021-11-06 14:06+0000\n"
|
"PO-Revision-Date: 2022-03-18 16:31+0000\n"
|
||||||
"Last-Translator: Nicklas Yli-Länttä <admin@timanttikuutio.eu>\n"
|
"Last-Translator: Stefan Werner <werner@iki.fi>\n"
|
||||||
"Language-Team: Finnish <http://translate.tandoor.dev/projects/tandoor/"
|
"Language-Team: Finnish <http://translate.tandoor.dev/projects/tandoor/"
|
||||||
"recipes-backend/fi/>\n"
|
"recipes-backend/fi/>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.8\n"
|
"X-Generator: Weblate 4.10.1\n"
|
||||||
|
|
||||||
#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125
|
#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125
|
||||||
#: .\cookbook\templates\forms\ingredients.html:34
|
#: .\cookbook\templates\forms\ingredients.html:34
|
||||||
@@ -31,10 +31,12 @@ msgid ""
|
|||||||
"Color of the top navigation bar. Not all colors work with all themes, just "
|
"Color of the top navigation bar. Not all colors work with all themes, just "
|
||||||
"try them out!"
|
"try them out!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ylänavigointipalkin väri. Ei kaikki värit toimi kaikkien teemojen kanssa; "
|
||||||
|
"kokeile!"
|
||||||
|
|
||||||
#: .\cookbook\forms.py:55
|
#: .\cookbook\forms.py:55
|
||||||
msgid "Default Unit to be used when inserting a new ingredient into a recipe."
|
msgid "Default Unit to be used when inserting a new ingredient into a recipe."
|
||||||
msgstr ""
|
msgstr "Oletusmittayksikkö uuden aineksen lisäämisessä."
|
||||||
|
|
||||||
#: .\cookbook\forms.py:57
|
#: .\cookbook\forms.py:57
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-04-11 15:09+0200\n"
|
"POT-Creation-Date: 2021-04-11 15:09+0200\n"
|
||||||
"PO-Revision-Date: 2021-04-12 20:22+0000\n"
|
"PO-Revision-Date: 2022-03-29 20:36+0000\n"
|
||||||
"Last-Translator: Olle Mineur <olle.mineur@gmail.com>\n"
|
"Last-Translator: Marcus Alsterfjord <marcus@marcussite.se>\n"
|
||||||
"Language-Team: Swedish <http://translate.tandoor.dev/projects/tandoor/"
|
"Language-Team: Swedish <http://translate.tandoor.dev/projects/tandoor/"
|
||||||
"recipes-backend/sv/>\n"
|
"recipes-backend/sv/>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.5.3\n"
|
"X-Generator: Weblate 4.10.1\n"
|
||||||
|
|
||||||
#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91
|
#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91
|
||||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:219
|
#: .\cookbook\templates\forms\edit_internal_recipe.html:219
|
||||||
@@ -192,13 +192,12 @@ msgstr "Du kan ange förvalda användare att dela recept med i inställningar."
|
|||||||
|
|
||||||
#: .\cookbook\forms.py:368
|
#: .\cookbook\forms.py:368
|
||||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:377
|
#: .\cookbook\templates\forms\edit_internal_recipe.html:377
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can use markdown to format this field. See the <a href=\"/docs/markdown/"
|
"You can use markdown to format this field. See the <a href=\"/docs/markdown/"
|
||||||
"\">docs here</a>"
|
"\">docs here</a>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Du kan använda markdown för att formatera detta fält. Se <a href=\"/docs/"
|
"Du kan använda markdown för att formatera detta fält. Se <a href=\"/docs/"
|
||||||
"markdown/\">dokumentation här</a> för mer information"
|
"markdown/\">dokumentation här</a> för mer information."
|
||||||
|
|
||||||
#: .\cookbook\forms.py:393
|
#: .\cookbook\forms.py:393
|
||||||
msgid "A username is not required, if left blank the new user can choose one."
|
msgid "A username is not required, if left blank the new user can choose one."
|
||||||
@@ -247,7 +246,7 @@ msgstr "Importerade ifrån"
|
|||||||
#: .\cookbook\helper\template_helper.py:60
|
#: .\cookbook\helper\template_helper.py:60
|
||||||
#: .\cookbook\helper\template_helper.py:62
|
#: .\cookbook\helper\template_helper.py:62
|
||||||
msgid "Could not parse template code."
|
msgid "Could not parse template code."
|
||||||
msgstr ""
|
msgstr "Det gick inte att läsa mallkoden."
|
||||||
|
|
||||||
#: .\cookbook\integration\integration.py:102
|
#: .\cookbook\integration\integration.py:102
|
||||||
#: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20
|
#: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20
|
||||||
@@ -565,10 +564,12 @@ msgid ""
|
|||||||
"On this Page you can manage all storage folder locations that should be "
|
"On this Page you can manage all storage folder locations that should be "
|
||||||
"monitored and synced."
|
"monitored and synced."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"På den här sidan kan du hantera alla lagringsmappar som ska övervakas och "
|
||||||
|
"synkroniseras."
|
||||||
|
|
||||||
#: .\cookbook\templates\batch\monitor.html:16
|
#: .\cookbook\templates\batch\monitor.html:16
|
||||||
msgid "The path must be in the following format"
|
msgid "The path must be in the following format"
|
||||||
msgstr ""
|
msgstr "Sökvägen måste ha följande format"
|
||||||
|
|
||||||
#: .\cookbook\templates\batch\monitor.html:27
|
#: .\cookbook\templates\batch\monitor.html:27
|
||||||
msgid "Sync Now!"
|
msgid "Sync Now!"
|
||||||
@@ -819,7 +820,6 @@ msgid "Delete Recipe"
|
|||||||
msgstr "Ta bort recept"
|
msgstr "Ta bort recept"
|
||||||
|
|
||||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:441
|
#: .\cookbook\templates\forms\edit_internal_recipe.html:441
|
||||||
#, fuzzy
|
|
||||||
msgid "Steps"
|
msgid "Steps"
|
||||||
msgstr "Steg"
|
msgstr "Steg"
|
||||||
|
|
||||||
@@ -999,7 +999,7 @@ msgstr "Recept"
|
|||||||
|
|
||||||
#: .\cookbook\templates\index.html:94
|
#: .\cookbook\templates\index.html:94
|
||||||
msgid "Log in to view recipes"
|
msgid "Log in to view recipes"
|
||||||
msgstr ""
|
msgstr "Logga in för att se recept"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:5
|
#: .\cookbook\templates\markdown_info.html:5
|
||||||
#: .\cookbook\templates\markdown_info.html:13
|
#: .\cookbook\templates\markdown_info.html:13
|
||||||
@@ -1024,11 +1024,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:25
|
#: .\cookbook\templates\markdown_info.html:25
|
||||||
msgid "Headers"
|
msgid "Headers"
|
||||||
msgstr ""
|
msgstr "Rubriker"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:54
|
#: .\cookbook\templates\markdown_info.html:54
|
||||||
msgid "Formatting"
|
msgid "Formatting"
|
||||||
msgstr ""
|
msgstr "Formatering"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:56
|
#: .\cookbook\templates\markdown_info.html:56
|
||||||
#: .\cookbook\templates\markdown_info.html:72
|
#: .\cookbook\templates\markdown_info.html:72
|
||||||
@@ -1043,21 +1043,21 @@ msgstr ""
|
|||||||
#: .\cookbook\templates\markdown_info.html:59
|
#: .\cookbook\templates\markdown_info.html:59
|
||||||
#: .\cookbook\templates\markdown_info.html:74
|
#: .\cookbook\templates\markdown_info.html:74
|
||||||
msgid "This text is bold"
|
msgid "This text is bold"
|
||||||
msgstr ""
|
msgstr "Denna text är fetstil"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:60
|
#: .\cookbook\templates\markdown_info.html:60
|
||||||
#: .\cookbook\templates\markdown_info.html:75
|
#: .\cookbook\templates\markdown_info.html:75
|
||||||
msgid "This text is italic"
|
msgid "This text is italic"
|
||||||
msgstr ""
|
msgstr "Denna text är kursiv"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:61
|
#: .\cookbook\templates\markdown_info.html:61
|
||||||
#: .\cookbook\templates\markdown_info.html:77
|
#: .\cookbook\templates\markdown_info.html:77
|
||||||
msgid "Blockquotes are also possible"
|
msgid "Blockquotes are also possible"
|
||||||
msgstr ""
|
msgstr "Blockcitat är också möjligt"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:84
|
#: .\cookbook\templates\markdown_info.html:84
|
||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr ""
|
msgstr "Listor"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:85
|
#: .\cookbook\templates\markdown_info.html:85
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -1110,7 +1110,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:152
|
#: .\cookbook\templates\markdown_info.html:152
|
||||||
msgid "Tables"
|
msgid "Tables"
|
||||||
msgstr ""
|
msgstr "Tabeller"
|
||||||
|
|
||||||
#: .\cookbook\templates\markdown_info.html:153
|
#: .\cookbook\templates\markdown_info.html:153
|
||||||
msgid ""
|
msgid ""
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from drf_writable_nested import UniqueFieldsMixin, WritableNestedModelSerializer
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.exceptions import NotFound, ValidationError
|
from rest_framework.exceptions import NotFound, ValidationError
|
||||||
|
|
||||||
|
from cookbook.helper.CustomStorageClass import CachedS3Boto3Storage
|
||||||
from cookbook.helper.HelperFunctions import str2bool
|
from cookbook.helper.HelperFunctions import str2bool
|
||||||
from cookbook.helper.shopping_helper import RecipeShoppingEditor
|
from cookbook.helper.shopping_helper import RecipeShoppingEditor
|
||||||
from cookbook.models import (Automation, BookmarkletImport, Comment, CookLog, CustomFilter,
|
from cookbook.models import (Automation, BookmarkletImport, Comment, CookLog, CustomFilter,
|
||||||
@@ -20,7 +21,7 @@ from cookbook.models import (Automation, BookmarkletImport, Comment, CookLog, Cu
|
|||||||
SupermarketCategory, SupermarketCategoryRelation, Sync, SyncLog, Unit,
|
SupermarketCategory, SupermarketCategoryRelation, Sync, SyncLog, Unit,
|
||||||
UserFile, UserPreference, ViewLog)
|
UserFile, UserPreference, ViewLog)
|
||||||
from cookbook.templatetags.custom_tags import markdown
|
from cookbook.templatetags.custom_tags import markdown
|
||||||
from recipes.settings import MEDIA_URL
|
from recipes.settings import MEDIA_URL, AWS_ENABLED
|
||||||
|
|
||||||
|
|
||||||
class ExtendedRecipeMixin(serializers.ModelSerializer):
|
class ExtendedRecipeMixin(serializers.ModelSerializer):
|
||||||
@@ -54,7 +55,12 @@ class ExtendedRecipeMixin(serializers.ModelSerializer):
|
|||||||
|
|
||||||
def get_image(self, obj):
|
def get_image(self, obj):
|
||||||
if obj.recipe_image:
|
if obj.recipe_image:
|
||||||
return MEDIA_URL + obj.recipe_image
|
if AWS_ENABLED:
|
||||||
|
storage = CachedS3Boto3Storage()
|
||||||
|
path = storage.url(obj.recipe_image)
|
||||||
|
else:
|
||||||
|
path = MEDIA_URL + obj.recipe_image
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
class CustomDecimalField(serializers.Field):
|
class CustomDecimalField(serializers.Field):
|
||||||
@@ -364,16 +370,23 @@ class SupermarketSerializer(UniqueFieldsMixin, SpacedModelSerializer):
|
|||||||
fields = ('id', 'name', 'description', 'category_to_supermarket')
|
fields = ('id', 'name', 'description', 'category_to_supermarket')
|
||||||
|
|
||||||
|
|
||||||
class RecipeSimpleSerializer(serializers.ModelSerializer):
|
class RecipeSimpleSerializer(WritableNestedModelSerializer):
|
||||||
url = serializers.SerializerMethodField('get_url')
|
url = serializers.SerializerMethodField('get_url')
|
||||||
|
|
||||||
def get_url(self, obj):
|
def get_url(self, obj):
|
||||||
return reverse('view_recipe', args=[obj.id])
|
return reverse('view_recipe', args=[obj.id])
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
# don't allow writing to Recipe via this API
|
||||||
|
return Recipe.objects.get(**validated_data)
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
# don't allow writing to Recipe via this API
|
||||||
|
return Recipe.objects.get(**validated_data)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Recipe
|
model = Recipe
|
||||||
fields = ('id', 'name', 'url')
|
fields = ('id', 'name', 'url')
|
||||||
read_only_fields = ['id', 'name', 'url']
|
|
||||||
|
|
||||||
|
|
||||||
class FoodSimpleSerializer(serializers.ModelSerializer):
|
class FoodSimpleSerializer(serializers.ModelSerializer):
|
||||||
@@ -427,6 +440,8 @@ class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer, ExtendedR
|
|||||||
name=sc_name,
|
name=sc_name,
|
||||||
space=space, defaults=sm_category)
|
space=space, defaults=sm_category)
|
||||||
onhand = validated_data.pop('food_onhand', None)
|
onhand = validated_data.pop('food_onhand', None)
|
||||||
|
if recipe := validated_data.get('recipe', None):
|
||||||
|
validated_data['recipe'] = Recipe.objects.get(**recipe)
|
||||||
|
|
||||||
# assuming if on hand for user also onhand for shopping_share users
|
# assuming if on hand for user also onhand for shopping_share users
|
||||||
if not onhand is None:
|
if not onhand is None:
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ in combination with [jrcs's letsencrypt companion](https://hub.docker.com/r/jrcs
|
|||||||
|
|
||||||
Please refer to the appropriate documentation on how to setup the reverse proxy and networks.
|
Please refer to the appropriate documentation on how to setup the reverse proxy and networks.
|
||||||
|
|
||||||
!!!!!!warning "Adjust client_max_body_size"
|
!!! warning "Adjust client_max_body_size"
|
||||||
By using jwilder's Nginx-proxy, uploads will be restricted to 1 MB file size. This can be resolved by adjusting the ```client_max_body_size``` variable in the jwilder nginx configuration.
|
By using jwilder's Nginx-proxy, uploads will be restricted to 1 MB file size. This can be resolved by adjusting the ```client_max_body_size``` variable in the jwilder nginx configuration.
|
||||||
|
|
||||||
Remember to add the appropriate environment variables to the `.env` file:
|
Remember to add the appropriate environment variables to the `.env` file:
|
||||||
|
|||||||
@@ -390,6 +390,8 @@ JS_REVERSE_SCRIPT_PREFIX = os.getenv('JS_REVERSE_SCRIPT_PREFIX', SCRIPT_NAME)
|
|||||||
STATIC_URL = os.getenv('STATIC_URL', '/static/')
|
STATIC_URL = os.getenv('STATIC_URL', '/static/')
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
|
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
|
||||||
|
|
||||||
|
AWS_ENABLED = True if os.getenv('S3_ACCESS_KEY', False) else False
|
||||||
|
|
||||||
if os.getenv('S3_ACCESS_KEY', ''):
|
if os.getenv('S3_ACCESS_KEY', ''):
|
||||||
DEFAULT_FILE_STORAGE = 'cookbook.helper.CustomStorageClass.CachedS3Boto3Storage'
|
DEFAULT_FILE_STORAGE = 'cookbook.helper.CustomStorageClass.CachedS3Boto3Storage'
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Django==3.2.12
|
Django==3.2.12
|
||||||
cryptography==36.0.1
|
cryptography==36.0.2
|
||||||
django-annoying==0.10.6
|
django-annoying==0.10.6
|
||||||
django-autocomplete-light==3.8.2
|
django-autocomplete-light==3.9.4
|
||||||
django-cleanup==6.0.0
|
django-cleanup==6.0.0
|
||||||
django-crispy-forms==1.14.0
|
django-crispy-forms==1.14.0
|
||||||
django-filter==21.1
|
django-filter==21.1
|
||||||
@@ -11,32 +11,32 @@ drf-writable-nested==0.6.3
|
|||||||
bleach==4.1.0
|
bleach==4.1.0
|
||||||
bleach-allowlist==1.0.3
|
bleach-allowlist==1.0.3
|
||||||
gunicorn==20.1.0
|
gunicorn==20.1.0
|
||||||
lxml==4.7.1
|
lxml==4.8.0
|
||||||
Markdown==3.3.6
|
Markdown==3.3.6
|
||||||
Pillow==9.0.1
|
Pillow==9.0.1
|
||||||
psycopg2-binary==2.9.3
|
psycopg2-binary==2.9.3
|
||||||
python-dotenv==0.19.2
|
python-dotenv==0.20.0
|
||||||
requests==2.27.1
|
requests==2.27.1
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
webdavclient3==3.14.6
|
webdavclient3==3.14.6
|
||||||
whitenoise==5.3.0
|
whitenoise==6.0.0
|
||||||
icalendar==4.0.9
|
icalendar==4.0.9
|
||||||
pyyaml==6.0
|
pyyaml==6.0
|
||||||
uritemplate==4.1.1
|
uritemplate==4.1.1
|
||||||
beautifulsoup4==4.10.0
|
beautifulsoup4==4.10.0
|
||||||
microdata==0.8.0
|
microdata==0.8.0
|
||||||
Jinja2==3.0.3
|
Jinja2==3.1.1
|
||||||
django-webpack-loader==1.4.1
|
django-webpack-loader==1.4.1
|
||||||
django-js-reverse==0.9.1
|
django-js-reverse==0.9.1
|
||||||
django-allauth==0.47.0
|
django-allauth==0.50.0
|
||||||
recipe-scrapers==13.19.0
|
recipe-scrapers==13.25.0
|
||||||
django-scopes==1.2.0
|
django-scopes==1.2.0
|
||||||
pytest==6.2.5
|
pytest==7.1.1
|
||||||
pytest-django==4.5.2
|
pytest-django==4.5.2
|
||||||
django-treebeard==4.5.1
|
django-treebeard==4.5.1
|
||||||
django-cors-headers==3.11.0
|
django-cors-headers==3.11.0
|
||||||
django-storages==1.12.3
|
django-storages==1.12.3
|
||||||
boto3==1.20.47
|
boto3==1.21.31
|
||||||
django-prometheus==2.2.0
|
django-prometheus==2.2.0
|
||||||
django-hCaptcha==0.2.0
|
django-hCaptcha==0.2.0
|
||||||
python-ldap==3.4.0
|
python-ldap==3.4.0
|
||||||
|
|||||||
@@ -11,9 +11,10 @@
|
|||||||
"@babel/eslint-parser": "^7.16.0",
|
"@babel/eslint-parser": "^7.16.0",
|
||||||
"@kangc/v-md-editor": "^1.7.7",
|
"@kangc/v-md-editor": "^1.7.7",
|
||||||
"@kevinfaguiar/vue-twemoji-picker": "^5.7.4",
|
"@kevinfaguiar/vue-twemoji-picker": "^5.7.4",
|
||||||
"@popperjs/core": "^2.10.1",
|
"@popperjs/core": "^2.11.2",
|
||||||
"@riophae/vue-treeselect": "^0.4.0",
|
"@riophae/vue-treeselect": "^0.4.0",
|
||||||
"axios": "^0.24.0",
|
"@vue/cli": "^5.0.4",
|
||||||
|
"axios": "^0.26.1",
|
||||||
"bootstrap-vue": "^2.21.2",
|
"bootstrap-vue": "^2.21.2",
|
||||||
"core-js": "^3.20.3",
|
"core-js": "^3.20.3",
|
||||||
"html2pdf.js": "^0.10.1",
|
"html2pdf.js": "^0.10.1",
|
||||||
@@ -27,7 +28,6 @@
|
|||||||
"vue-cookies": "^1.7.4",
|
"vue-cookies": "^1.7.4",
|
||||||
"vue-i18n": "^8.26.8",
|
"vue-i18n": "^8.26.8",
|
||||||
"vue-infinite-loading": "^2.4.5",
|
"vue-infinite-loading": "^2.4.5",
|
||||||
"vue-jstree": "^2.1.6",
|
|
||||||
"vue-multiselect": "^2.1.6",
|
"vue-multiselect": "^2.1.6",
|
||||||
"vue-property-decorator": "^9.1.2",
|
"vue-property-decorator": "^9.1.2",
|
||||||
"vue-simple-calendar": "^5.0.1",
|
"vue-simple-calendar": "^5.0.1",
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
||||||
"@typescript-eslint/parser": "^4.32.0",
|
"@typescript-eslint/parser": "^4.32.0",
|
||||||
"@vue/cli-plugin-babel": "~4.5.13",
|
"@vue/cli-plugin-babel": "~4.5.13",
|
||||||
"@vue/cli-plugin-eslint": "~4.5.15",
|
"@vue/cli-plugin-eslint": "~5.0.4",
|
||||||
"@vue/cli-plugin-pwa": "~4.5.13",
|
"@vue/cli-plugin-pwa": "~4.5.13",
|
||||||
"@vue/cli-plugin-typescript": "^4.5.15",
|
"@vue/cli-plugin-typescript": "^4.5.15",
|
||||||
"@vue/cli-service": "~4.5.15",
|
"@vue/cli-service": "~4.5.15",
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"workbox-expiration": "^6.3.0",
|
"workbox-expiration": "^6.3.0",
|
||||||
"workbox-navigation-preload": "^6.0.2",
|
"workbox-navigation-preload": "^6.0.2",
|
||||||
"workbox-precaching": "^6.3.0",
|
"workbox-precaching": "^6.3.0",
|
||||||
"workbox-routing": "^6.3.0",
|
"workbox-routing": "^6.5.0",
|
||||||
"workbox-strategies": "^6.2.4"
|
"workbox-strategies": "^6.2.4"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
|
|||||||
@@ -140,6 +140,24 @@
|
|||||||
</div>
|
</div>
|
||||||
</b-collapse>
|
</b-collapse>
|
||||||
</div>
|
</div>
|
||||||
|
<b-card-header header-tag="header" class="p-1" role="tab">
|
||||||
|
<b-button squared block v-b-toggle.additional_collapse class="text-left" variant="outline-primary">{{ $t("additional_options") }}</b-button>
|
||||||
|
</b-card-header>
|
||||||
|
<b-collapse id="additional_collapse" class="mt-2" v-model="additional_visible">
|
||||||
|
<b-form-group>
|
||||||
|
<b-input-group-append>
|
||||||
|
<b-input-group-text squared> {{ $t("Create Food") }}</b-input-group-text>
|
||||||
|
<b-input-group-text squared>
|
||||||
|
<b-form-checkbox v-model="recipe.create_food"></b-form-checkbox>
|
||||||
|
</b-input-group-text>
|
||||||
|
<b-input-group-text squared v-if="recipe.create_food"> {{ $t("Name") }}</b-input-group-text>
|
||||||
|
<b-form-input squared v-if="recipe.create_food" v-model="recipe.food_name" id="food_name"></b-form-input>
|
||||||
|
</b-input-group-append>
|
||||||
|
<em class="small text-muted">
|
||||||
|
{{ $t("create_food_desc") }}
|
||||||
|
</em>
|
||||||
|
</b-form-group>
|
||||||
|
</b-collapse>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -619,6 +637,8 @@ export default {
|
|||||||
paste_step: undefined,
|
paste_step: undefined,
|
||||||
show_file_create: false,
|
show_file_create: false,
|
||||||
step_for_file_create: undefined,
|
step_for_file_create: undefined,
|
||||||
|
additional_visible: false,
|
||||||
|
create_food: undefined,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -650,6 +670,12 @@ export default {
|
|||||||
this.recipe_changed = this.recipe_changed !== undefined
|
this.recipe_changed = this.recipe_changed !== undefined
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"recipe.name": function () {
|
||||||
|
this.recipe.food_name = this.recipe.name.toLowerCase()
|
||||||
|
},
|
||||||
|
"recipe.create_food": function () {
|
||||||
|
this.create_food = this.recipe.create_food
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
keyboardListener: function (e) {
|
keyboardListener: function (e) {
|
||||||
@@ -736,6 +762,9 @@ export default {
|
|||||||
.then((response) => {
|
.then((response) => {
|
||||||
StandardToasts.makeStandardToast(StandardToasts.SUCCESS_UPDATE)
|
StandardToasts.makeStandardToast(StandardToasts.SUCCESS_UPDATE)
|
||||||
this.recipe_changed = false
|
this.recipe_changed = false
|
||||||
|
if (this.create_food) {
|
||||||
|
apiFactory.createFood({ name: this.recipe.food_name, recipe: { id: this.recipe.id, name: this.recipe.name } })
|
||||||
|
}
|
||||||
if (view_after) {
|
if (view_after) {
|
||||||
location.href = resolveDjangoUrl("view_recipe", this.recipe_id)
|
location.href = resolveDjangoUrl("view_recipe", this.recipe_id)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,9 +123,9 @@
|
|||||||
<div class="collapse" :id="'section-' + sectionID(x, i)" visible role="tabpanel" :class="{ show: x == 'false' }">
|
<div class="collapse" :id="'section-' + sectionID(x, i)" visible role="tabpanel" :class="{ show: x == 'false' }">
|
||||||
<!-- passing an array of values to the table grouped by Food -->
|
<!-- passing an array of values to the table grouped by Food -->
|
||||||
<transition-group name="slide-fade">
|
<transition-group name="slide-fade">
|
||||||
<div class="mx-4" v-for="(entries, x) in Object.entries(s)" :key="x">
|
<div class="ml-4 mr-0" v-for="(entries, x) in Object.entries(s)" :key="x">
|
||||||
<transition name="slide-fade" mode="out-in">
|
<transition name="slide-fade" mode="out-in">
|
||||||
<ShoppingLineItem
|
<shopping-line-item
|
||||||
:entries="entries[1]"
|
:entries="entries[1]"
|
||||||
:groupby="group_by"
|
:groupby="group_by"
|
||||||
:settings="settings"
|
:settings="settings"
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="shopping_line_item">
|
<div id="shopping_line_item">
|
||||||
<b-row align-h="start">
|
<b-row align-h="start">
|
||||||
<b-col cols="3" md="2" class="justify-content-start align-items-center d-flex d-md-none pr-0" v-if="settings.left_handed">
|
<b-col cols="2" md="2" class="justify-content-start align-items-center d-flex d-md-none pr-0" v-if="settings.left_handed">
|
||||||
<input type="checkbox" class="form-control form-control-sm checkbox-control-mobile" :checked="formatChecked" @change="updateChecked" :key="entries[0].id" />
|
<input type="checkbox" class="form-control form-control-sm checkbox-control-mobile" :checked="formatChecked" @change="updateChecked" :key="entries[0].id" />
|
||||||
<b-button size="sm" @click="showDetails = !showDetails" class="d-inline-block d-md-none p-0" variant="link">
|
<b-button size="sm" @click="showDetails = !showDetails" class="d-inline-block d-md-none p-0" variant="link">
|
||||||
<div class="text-nowrap"><i class="fa fa-chevron-right rotate" :class="showDetails ? 'rotated' : ''"></i></div>
|
<div class="text-nowrap"><i class="fa fa-chevron-right rotate" :class="showDetails ? 'rotated' : ''"></i></div>
|
||||||
</b-button>
|
</b-button>
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col cols="1" md="1" class="align-items-center d-flex">
|
<b-col cols="1" class="align-items-center d-flex">
|
||||||
<div class="dropdown b-dropdown position-static inline-block" data-html2canvas-ignore="true" @click.stop="$emit('open-context-menu', $event, entries)">
|
<div class="dropdown b-dropdown position-static inline-block" data-html2canvas-ignore="true" @click.stop="$emit('open-context-menu', $event, entries)">
|
||||||
<button
|
<button
|
||||||
aria-haspopup="true"
|
aria-haspopup="true"
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<b-col cols="1" class="px-1 justify-content-center align-items-center d-none d-md-flex">
|
<b-col cols="1" class="px-1 justify-content-center align-items-center d-none d-md-flex">
|
||||||
<input type="checkbox" class="form-control form-control-sm checkbox-control" :checked="formatChecked" @change="updateChecked" :key="entries[0].id" />
|
<input type="checkbox" class="form-control form-control-sm checkbox-control" :checked="formatChecked" @change="updateChecked" :key="entries[0].id" />
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col cols="8" md="9">
|
<b-col cols="8" >
|
||||||
<b-row class="d-flex h-100">
|
<b-row class="d-flex h-100">
|
||||||
<b-col cols="6" md="3" class="d-flex align-items-center" v-if="Object.entries(formatAmount).length == 1">
|
<b-col cols="6" md="3" class="d-flex align-items-center" v-if="Object.entries(formatAmount).length == 1">
|
||||||
<strong class="mr-1">{{ Object.entries(formatAmount)[0][1] }}</strong> {{ Object.entries(formatAmount)[0][0] }}
|
<strong class="mr-1">{{ Object.entries(formatAmount)[0][1] }}</strong> {{ Object.entries(formatAmount)[0][0] }}
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
</b-col>
|
</b-col>
|
||||||
</b-row>
|
</b-row>
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col cols="3" md="2" class="justify-content-start align-items-center d-flex d-md-none" v-if="!settings.left_handed">
|
<b-col cols="2" class="justify-content-start align-items-center d-flex d-md-none pl-0 pr-0" v-if="!settings.left_handed">
|
||||||
<b-button size="sm" @click="showDetails = !showDetails" class="d-inline-block d-md-none p-0" variant="link">
|
<b-button size="sm" @click="showDetails = !showDetails" class="d-inline-block d-md-none p-0" variant="link">
|
||||||
<div class="text-nowrap"><i class="fa fa-chevron-right rotate" :class="showDetails ? 'rotated' : ''"></i></div>
|
<div class="text-nowrap"><i class="fa fa-chevron-right rotate" :class="showDetails ? 'rotated' : ''"></i></div>
|
||||||
</b-button>
|
</b-button>
|
||||||
|
|||||||
@@ -381,5 +381,8 @@
|
|||||||
"Keyword": "Keyword",
|
"Keyword": "Keyword",
|
||||||
"Advanced": "Advanced",
|
"Advanced": "Advanced",
|
||||||
"Page": "Page",
|
"Page": "Page",
|
||||||
"Reset": "Reset"
|
"Reset": "Reset",
|
||||||
|
"Create Food": "Create Food",
|
||||||
|
"create_food_desc": "Create a food and link it to this recipe.",
|
||||||
|
"additional_options": "Additional Options"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
"Settings": "Asetukset",
|
"Settings": "Asetukset",
|
||||||
"or": "tai",
|
"or": "tai",
|
||||||
"and": "ja",
|
"and": "ja",
|
||||||
"Information": "Informaatio",
|
"Information": "Tiedot",
|
||||||
"Download": "Lataa",
|
"Download": "Lataa",
|
||||||
"Create": "Luo",
|
"Create": "Luo",
|
||||||
"Advanced Search Settings": "Tarkennetun Haun Asetukset",
|
"Advanced Search Settings": "Tarkennetun Haun Asetukset",
|
||||||
@@ -122,21 +122,21 @@
|
|||||||
"move_confirmation": "Siirrä <i>{child}</i> yläluokkaan <i>{parent}</i>",
|
"move_confirmation": "Siirrä <i>{child}</i> yläluokkaan <i>{parent}</i>",
|
||||||
"merge_confirmation": "Korvaa <i>{source}</i> esiintymiset <i>{target}:lla</i>",
|
"merge_confirmation": "Korvaa <i>{source}</i> esiintymiset <i>{target}:lla</i>",
|
||||||
"create_rule": "ja luo automaatio",
|
"create_rule": "ja luo automaatio",
|
||||||
"move_selection": "Valitse yläluokka {type} johon {suorce} siirretään.",
|
"move_selection": "Valitse yläluokka {type} johon {source} siirretään.",
|
||||||
"merge_selection": "Korvaa kaikki {source} esiintymiset valitulla {type}:llä.",
|
"merge_selection": "Korvaa kaikki {source} esiintymiset valitulla {type}:llä.",
|
||||||
"Root": "Root",
|
"Root": "Root",
|
||||||
"Ignore_Shopping": "Ohita Ostokset",
|
"Ignore_Shopping": "Ohita Ostokset",
|
||||||
"Shopping_Category": "Ostosluokka",
|
"Shopping_Category": "Ostosluokka",
|
||||||
"Edit_Food": "Muokkaa Ruokaa",
|
"Edit_Food": "Muokkaa ruokaa",
|
||||||
"Move_Food": "Siirrä Ruoka",
|
"Move_Food": "Siirrä ruoka",
|
||||||
"New_Food": "Uusi Ruoka",
|
"New_Food": "Uusi ruoka",
|
||||||
"Hide_Food": "Piilota Ruoka",
|
"Hide_Food": "Piilota ruoka",
|
||||||
"Food_Alias": "Ruoan Nimimerkki",
|
"Food_Alias": "Ruoan nimimerkki",
|
||||||
"Unit_Alias": "Yksikkö alias",
|
"Unit_Alias": "Yksikköalias",
|
||||||
"Keyword_Alias": "Avainsana alias",
|
"Keyword_Alias": "Avainsana-alias",
|
||||||
"Delete_Food": "Poista Ruoka",
|
"Delete_Food": "Poista ruoka",
|
||||||
"No_ID": "Poistaminen epäonnistui, ID:tä ei löytynyt.",
|
"No_ID": "Poistaminen epäonnistui, ID:tä ei löytynyt.",
|
||||||
"Meal_Plan_Days": "Tulevat Ruokasuunnitelmat",
|
"Meal_Plan_Days": "Tulevat ruokasuunnitelmat",
|
||||||
"merge_title": "Yhdistä {type}",
|
"merge_title": "Yhdistä {type}",
|
||||||
"move_title": "Siirrä {type}",
|
"move_title": "Siirrä {type}",
|
||||||
"Food": "Ruoka",
|
"Food": "Ruoka",
|
||||||
@@ -206,5 +206,11 @@
|
|||||||
"Auto_Planner": "Automaattinen Suunnittelija",
|
"Auto_Planner": "Automaattinen Suunnittelija",
|
||||||
"New_Cookbook": "Uusi keittokirja",
|
"New_Cookbook": "Uusi keittokirja",
|
||||||
"Hide_Keyword": "Piilota avainsana",
|
"Hide_Keyword": "Piilota avainsana",
|
||||||
"Clear": "Pyyhi"
|
"Clear": "Pyyhi",
|
||||||
|
"err_moving_resource": "Resurssin siirtämisessä tapahtui virhe!",
|
||||||
|
"err_merging_resource": "Resurssin yhdistämisessä tapahtui virhe!",
|
||||||
|
"success_moving_resource": "Resurssin siirto onnistui!",
|
||||||
|
"success_merging_resource": "Resurssin yhdistäminen onnistui!",
|
||||||
|
"Search Settings": "Hakuasetukset",
|
||||||
|
"Shopping_Categories": "Ostoskategoriat"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -285,5 +285,49 @@
|
|||||||
"Create_Meal_Plan_Entry": "Créer une entrée de menu",
|
"Create_Meal_Plan_Entry": "Créer une entrée de menu",
|
||||||
"RemoveFoodFromShopping": "Retirer l’ingrédient {food} de votre liste de courses",
|
"RemoveFoodFromShopping": "Retirer l’ingrédient {food} de votre liste de courses",
|
||||||
"left_handed": "Mode gaucher",
|
"left_handed": "Mode gaucher",
|
||||||
"left_handed_help": "Optimise l’interface utilisateur pour une utilisation avec la main gauche."
|
"left_handed_help": "Optimise l’interface utilisateur pour une utilisation avec la main gauche.",
|
||||||
|
"Custom Filter": "Filtre personnalisé",
|
||||||
|
"shared_with": "Partagé avec",
|
||||||
|
"sort_by": "Trié par",
|
||||||
|
"desc": "Ordre décroissant",
|
||||||
|
"date_created": "Créé le",
|
||||||
|
"make_now": "Cuisiner maintenant",
|
||||||
|
"copy_to_new": "Copier dans une nouvelle recette",
|
||||||
|
"recipe_name": "Nom de la recette",
|
||||||
|
"paste_ingredients_placeholder": "Copier la liste d'ingrédients ici...",
|
||||||
|
"paste_ingredients": "Copier les ingrédients",
|
||||||
|
"ingredient_list": "Liste des ingrédients",
|
||||||
|
"search_no_recipes": "Aucune recettes trouvées !",
|
||||||
|
"substitute_siblings_help": "Tous les ingrédients qui partagent un parent avec cette ingrédient sont considérés comme des substituts.",
|
||||||
|
"OnHand_help": "L'ingrédient est dans l'inventaire et ne sera pas automatiquement ajouté à la liste de courses. Le status actuel est partagé avec les utilisateurs de la liste.",
|
||||||
|
"ignore_shopping_help": "Ne jamais ajouter l'ingrédient à la liste de courses (ex: eau)",
|
||||||
|
"food_recipe_help": "Ajouter un lien vers la recette ici incluera cette recette dans n'importe qu'elle autre recette qui utilise cet ingrédient",
|
||||||
|
"shopping_category_help": "Les supermarchés peuvent être triés et filtrés par catégorie d'ingrédients selon la disposition des rayons.",
|
||||||
|
"Units": "Unités",
|
||||||
|
"view_recipe": "Voir la recette",
|
||||||
|
"review_shopping": "Vérifier les éléments de la liste avant de sauvegarder",
|
||||||
|
"Select": "Sélectionner",
|
||||||
|
"Supermarkets": "Supermarchés",
|
||||||
|
"User": "Utilisateur",
|
||||||
|
"Keyword": "Mot-clé",
|
||||||
|
"Foods": "Ingrédients",
|
||||||
|
"enable_expert": "Activer le mode expert",
|
||||||
|
"show_rating": "Afficher les notes",
|
||||||
|
"asc": "Ordre croissant",
|
||||||
|
"book_filter_help": "Inclure les recettes filtrés en plus de celles ajoutées manuellement.",
|
||||||
|
"search_import_help_text": "Importer une recette depuis un site ou application externe.",
|
||||||
|
"search_create_help_text": "Créer une nouvelle recette directement dans Tandoor.",
|
||||||
|
"substitute_help": "Les substituts sont pris en compte lors d'une recherche de recettes pouvant être cuisinées avec les ingrédients disponibles.",
|
||||||
|
"remember_search": "Enregistrer la recherche",
|
||||||
|
"expert_mode": "Mode expert",
|
||||||
|
"simple_mode": "Mode simplifié",
|
||||||
|
"advanced": "Avancé",
|
||||||
|
"fields": "Champs",
|
||||||
|
"show_keywords": "Afficher les mots-clés",
|
||||||
|
"show_foods": "Afficher les ingrédients",
|
||||||
|
"show_books": "Afficher les livres",
|
||||||
|
"show_units": "Afficher les unités",
|
||||||
|
"show_filters": "Afficher les filtres",
|
||||||
|
"save_filter": "Sauvegarder le filtre",
|
||||||
|
"filter_name": "Filtrer par nom"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -349,8 +349,8 @@
|
|||||||
"ChildInheritFields_help": "",
|
"ChildInheritFields_help": "",
|
||||||
"InheritFields_help": "",
|
"InheritFields_help": "",
|
||||||
"last_viewed": "",
|
"last_viewed": "",
|
||||||
"created_on": "",
|
"created_on": "Criado em",
|
||||||
"updatedon": "",
|
"updatedon": "Atualizado em",
|
||||||
"advanced_search_settings": "",
|
"advanced_search_settings": "",
|
||||||
"nothing_planned_today": "",
|
"nothing_planned_today": "",
|
||||||
"no_pinned_recipes": "",
|
"no_pinned_recipes": "",
|
||||||
@@ -358,7 +358,7 @@
|
|||||||
"Pinned": "",
|
"Pinned": "",
|
||||||
"Quick actions": "",
|
"Quick actions": "",
|
||||||
"Ratings": "",
|
"Ratings": "",
|
||||||
"Internal": "",
|
"Internal": "Interno",
|
||||||
"Units": "",
|
"Units": "",
|
||||||
"Random Recipes": "",
|
"Random Recipes": "",
|
||||||
"parameter_count": "",
|
"parameter_count": "",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"empty_list": "",
|
"empty_list": "",
|
||||||
"Select": "",
|
"Select": "",
|
||||||
"Supermarkets": "",
|
"Supermarkets": "",
|
||||||
"User": "",
|
"User": "Utilizador",
|
||||||
"Keyword": "",
|
"Keyword": "",
|
||||||
"Advanced": "",
|
"Advanced": "",
|
||||||
"Page": "",
|
"Page": "",
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"import_running": "Import pågår, var god vänta!",
|
"import_running": "Importering pågår, var god vänta!",
|
||||||
"all_fields_optional": "Alla rutor är valfria och kan lämnas tomma.",
|
"all_fields_optional": "Alla rutor är valfria och kan lämnas tomma.",
|
||||||
"convert_internal": "Konvertera till internt recept",
|
"convert_internal": "Konvertera till internt recept",
|
||||||
"Log_Recipe_Cooking": "Logga tillagningen av receptet",
|
"Log_Recipe_Cooking": "Logga tillagningen av receptet",
|
||||||
"External_Recipe_Image": "Externt receptbild",
|
"External_Recipe_Image": "Extern receptbild",
|
||||||
"Add_to_Book": "Lägg till i kokbok",
|
"Add_to_Book": "Lägg till i kokbok",
|
||||||
"Add_to_Shopping": "Lägg till i handelslista",
|
"Add_to_Shopping": "Lägg till i inköpslista",
|
||||||
"Add_to_Plan": "Lägg till i matsedel",
|
"Add_to_Plan": "Lägg till i matsedel",
|
||||||
"Step_start_time": "Steg starttid",
|
"Step_start_time": "Steg starttid",
|
||||||
"Select_Book": "Välj kokbok",
|
"Select_Book": "Välj kokbok",
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"Fats": "Fett",
|
"Fats": "Fett",
|
||||||
"Carbohydrates": "Kolhydrater",
|
"Carbohydrates": "Kolhydrater",
|
||||||
"Calories": "Kalorier",
|
"Calories": "Kalorier",
|
||||||
"Energy": "",
|
"Energy": "Energi",
|
||||||
"Nutrition": "Näringsinnehåll",
|
"Nutrition": "Näringsinnehåll",
|
||||||
"Date": "Datum",
|
"Date": "Datum",
|
||||||
"Share": "Dela",
|
"Share": "Dela",
|
||||||
@@ -37,5 +37,185 @@
|
|||||||
"Search": "Sök",
|
"Search": "Sök",
|
||||||
"Import": "Importera",
|
"Import": "Importera",
|
||||||
"Print": "Skriv ut",
|
"Print": "Skriv ut",
|
||||||
"Information": "Information"
|
"Information": "Information",
|
||||||
|
"Link": "Länk",
|
||||||
|
"Copy": "Kopiera",
|
||||||
|
"Key_Ctrl": "Ctrl",
|
||||||
|
"Sort_by_new": "Sortera efter ny",
|
||||||
|
"Recipes_per_page": "Recept per sida",
|
||||||
|
"Table_of_Contents": "Innehållsförteckning",
|
||||||
|
"Books": "Böcker",
|
||||||
|
"New_Recipe": "Nytt recept",
|
||||||
|
"Recently_Viewed": "Nyligen visade",
|
||||||
|
"create_rule": "och skapa automation",
|
||||||
|
"Root": "Rot",
|
||||||
|
"External": "Extern",
|
||||||
|
"Settings": "Inställningar",
|
||||||
|
"New": "Ny",
|
||||||
|
"Meal_Plan": "Måltidsplanering",
|
||||||
|
"Categories": "Kategorier",
|
||||||
|
"Category": "Kategori",
|
||||||
|
"Selected": "Vald",
|
||||||
|
"Supermarket": "Mataffär",
|
||||||
|
"Files": "Filer",
|
||||||
|
"Size": "Storlek",
|
||||||
|
"err_creating_resource": "Det uppstod ett fel när en resurs skulle skapas!",
|
||||||
|
"err_updating_resource": "Det uppstod ett fel när en resurs skulle uppdateras!",
|
||||||
|
"err_fetching_resource": "Det uppstod ett fel när en resurs skulle hämtas!",
|
||||||
|
"success_fetching_resource": "En resurs har hämtats!",
|
||||||
|
"err_deleting_resource": "Det uppstod ett fel när en resurs skulle tas bort!",
|
||||||
|
"success_updating_resource": "En resurs har uppdaterats!",
|
||||||
|
"Remove_nutrition_recipe": "Ta bort näring från receptet",
|
||||||
|
"Add_nutrition_recipe": "Lägg till näring till receptet",
|
||||||
|
"New_Keyword": "Nytt nyckelord",
|
||||||
|
"Automation": "Automatisering",
|
||||||
|
"Parameter": "Parameter",
|
||||||
|
"Download": "Ladda ned",
|
||||||
|
"and": "och",
|
||||||
|
"Ok": "Öppna",
|
||||||
|
"Create": "Skapa",
|
||||||
|
"Ignore_Shopping": "Ignorera handling",
|
||||||
|
"or": "eller",
|
||||||
|
"Create_New_Keyword": "Lägg till nytt nyckelord",
|
||||||
|
"No_Results": "Inget resultat",
|
||||||
|
"New_Unit": "Ny enhet",
|
||||||
|
"create_title": "Ny {type}",
|
||||||
|
"Drag_Here_To_Delete": "Dra hit för att radera",
|
||||||
|
"Meal_Type_Required": "Måltidstyp är obligatorisk",
|
||||||
|
"Clone": "Klona",
|
||||||
|
"Reset_Search": "Rensa sök",
|
||||||
|
"Title_or_Recipe_Required": "Val av titel eller recept krävs",
|
||||||
|
"success_creating_resource": "En resurs har skapats!",
|
||||||
|
"Time": "Tid",
|
||||||
|
"Text": "Text",
|
||||||
|
"Empty": "Tom",
|
||||||
|
"and_up": "& ned",
|
||||||
|
"Cancel": "Avbryt",
|
||||||
|
"Failure": "Misslyckas",
|
||||||
|
"File": "Fil",
|
||||||
|
"Delete": "Radera",
|
||||||
|
"edit_title": "Redigera {type}",
|
||||||
|
"Description": "Beskrivning",
|
||||||
|
"Recipe": "Recept",
|
||||||
|
"Icon": "Ikon",
|
||||||
|
"Unit": "Enhet",
|
||||||
|
"Name": "Namn",
|
||||||
|
"Type": "Typ",
|
||||||
|
"No_ID": "ID hittades inte, kan inte radera.",
|
||||||
|
"Create_New_Unit": "Lägg till enhet",
|
||||||
|
"Export_As_ICal": "Exportera nuvarande period till iCal format",
|
||||||
|
"Auto_Planner": "Autoplanera",
|
||||||
|
"Show_as_header": "Visa som rubrik",
|
||||||
|
"Hide_as_header": "Göm som rubrik",
|
||||||
|
"Copy_template_reference": "Kopiera mallreferens",
|
||||||
|
"Save_and_View": "Spara & visa",
|
||||||
|
"step_time_minutes": "Stegets tid i minuter",
|
||||||
|
"Url_Import": "Länk import",
|
||||||
|
"Delete_Keyword": "Ta bort nyckelord",
|
||||||
|
"Edit_Keyword": "Redigera nyckelord",
|
||||||
|
"confirm_delete": "Är du säker på att du vill radera detta {object}?",
|
||||||
|
"Move_Keyword": "Flytta nyckelord",
|
||||||
|
"Edit_Recipe": "Redigera recept",
|
||||||
|
"Merge_Keyword": "Slå samman nyckelord",
|
||||||
|
"Hide_Keywords": "Dölj nyckelord",
|
||||||
|
"Hide_Recipes": "Dölj recept",
|
||||||
|
"Move_Up": "Flytta upp",
|
||||||
|
"Move_Down": "Flytta ned",
|
||||||
|
"Step_Name": "Stegets namn",
|
||||||
|
"Step_Type": "Stegets typ",
|
||||||
|
"Make_Ingredient": "Skapa ingrediens",
|
||||||
|
"Enable_Amount": "Aktivera belopp",
|
||||||
|
"Disable_Amount": "Inaktivera belopp",
|
||||||
|
"move_title": "Flytta {type}",
|
||||||
|
"merge_title": "Slå samman {type}",
|
||||||
|
"Food": "Mat",
|
||||||
|
"Key_Shift": "Shift",
|
||||||
|
"Instructions": "Instruktioner",
|
||||||
|
"and_down": "& up",
|
||||||
|
"Added_by": "Tillagd av",
|
||||||
|
"Title": "Titel",
|
||||||
|
"Week": "Vecka",
|
||||||
|
"Month": "Månad",
|
||||||
|
"Year": "År",
|
||||||
|
"Period": "Period",
|
||||||
|
"Undefined": "Odefinierad",
|
||||||
|
"Periods": "Perioder",
|
||||||
|
"Plan_Period_To_Show": "Visa veckor, månader eller år",
|
||||||
|
"Color": "Färg",
|
||||||
|
"Plan_Show_How_Many_Periods": "Hur många perioder ska visas",
|
||||||
|
"Starting_Day": "Startdag i veckan",
|
||||||
|
"Meal_Types": "Måltidstyper",
|
||||||
|
"Meal_Type": "Måltidstyp",
|
||||||
|
"New_Meal_Type": "Ny måltidstyp",
|
||||||
|
"AddFoodToShopping": "Lägg till {food} på din inköpslista",
|
||||||
|
"RemoveFoodFromShopping": "Ta bort {mat} från din inköpslista",
|
||||||
|
"DeleteShoppingConfirm": "Är du säker på att du vill ta bort all {food} från inköpslistan?",
|
||||||
|
"Week_Numbers": "Veckonummer",
|
||||||
|
"Show_Week_Numbers": "Visa veckonummer?",
|
||||||
|
"Export_To_ICal": "Exportera .ics",
|
||||||
|
"Next_Day": "Nästa dag",
|
||||||
|
"Previous_Day": "Föregående dag",
|
||||||
|
"GroupBy": "Gruppera enligt",
|
||||||
|
"Next_Period": "Nästa period",
|
||||||
|
"Previous_Period": "Föregående period",
|
||||||
|
"Current_Period": "Nuvarande period",
|
||||||
|
"Inherit": "Ärva",
|
||||||
|
"InheritFields": "Ärv fältvärden",
|
||||||
|
"NoCategory": "Ingen kategori vald.",
|
||||||
|
"show_split_screen": "Delad vy",
|
||||||
|
"Warning": "Varning",
|
||||||
|
"Reset": "Återställa",
|
||||||
|
"select_unit": "Välj enhet",
|
||||||
|
"select_food": "Välj mat",
|
||||||
|
"remove_selection": "Avmarkera",
|
||||||
|
"Select": "Välj",
|
||||||
|
"Supermarkets": "Mataffärer",
|
||||||
|
"User": "Användare",
|
||||||
|
"Keyword": "Nyckelord",
|
||||||
|
"Advanced": "Avancerat",
|
||||||
|
"Page": "Sida",
|
||||||
|
"select_keyword": "Välj nyckelord",
|
||||||
|
"add_keyword": "Lägg till nyckelord",
|
||||||
|
"select_file": "Välj fil",
|
||||||
|
"select_recipe": "Välj recept",
|
||||||
|
"Units": "Enheter",
|
||||||
|
"last_viewed": "Senast visad",
|
||||||
|
"empty_list": "Listan är tom.",
|
||||||
|
"Load_More": "Ladda mer",
|
||||||
|
"Make_Header": "Skapa rubrik",
|
||||||
|
"err_moving_resource": "Det uppstod ett fel när en resurs skulle flyttas!",
|
||||||
|
"err_merging_resource": "Det uppstod ett fel när en resurs skulle slås ihop!",
|
||||||
|
"success_moving_resource": "En resurs har flyttats!",
|
||||||
|
"success_merging_resource": "En resurs har slagits samman!",
|
||||||
|
"Select_File": "Välj fil",
|
||||||
|
"Add_Step": "Lägg till steg",
|
||||||
|
"Note": "Anteckning",
|
||||||
|
"Success": "Lyckas",
|
||||||
|
"Image": "Bild",
|
||||||
|
"View": "Visa",
|
||||||
|
"Recipes": "Recept",
|
||||||
|
"Merge": "Slå samman",
|
||||||
|
"delete_confirmation": "Är du säker på att du vill radera {source}?",
|
||||||
|
"delete_title": "Radera {type}",
|
||||||
|
"Keyword_Alias": "Nyckelord alias",
|
||||||
|
"Recipe_Book": "Receptbok",
|
||||||
|
"Search Settings": "Sökinställningar",
|
||||||
|
"warning_feature_beta": "Den här funktionen är för närvarande i ett BETA-läge (testning). Vänligen förvänta dig buggar och eventuellt brytande ändringar i framtiden (möjligen att förlora funktionsrelaterad data) när du använder den här funktionen.",
|
||||||
|
"success_deleting_resource": "En resurs har raderats!",
|
||||||
|
"file_upload_disabled": "Filuppladdning är inte aktiverat för ditt utrymme.",
|
||||||
|
"show_only_internal": "Visa endast interna recept",
|
||||||
|
"Manage_Books": "Hantera böcker",
|
||||||
|
"Keywords": "Nyckelord",
|
||||||
|
"Move": "Flytta",
|
||||||
|
"Parent": "Förälder",
|
||||||
|
"merge_selection": "Ersätt alla förekomster av {source} med den valda {type}.",
|
||||||
|
"Shopping_Category": "Shopping kategori",
|
||||||
|
"move_selection": "Välj en förälder {type} att flytta {source} till.",
|
||||||
|
"Create_New_Shopping Category": "Skapa ny shoppingkategori",
|
||||||
|
"Create_New_Meal_Type": "Lägg till ny måltidstyp",
|
||||||
|
"tree_root": "Roten av trädet",
|
||||||
|
"Meal_Plan_Days": "Framtida måltidsplaner",
|
||||||
|
"Automate": "Automatisera",
|
||||||
|
"Shopping_Categories": "Shopping kategorier",
|
||||||
|
"Unit_Alias": "Enhetsalias"
|
||||||
}
|
}
|
||||||
|
|||||||
5154
vue/yarn.lock
5154
vue/yarn.lock
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user