import improvements

This commit is contained in:
vabene1111
2025-03-20 18:26:28 +01:00
parent 73c376427c
commit 5f190bdc6c
33 changed files with 82 additions and 3 deletions

View File

@@ -1807,7 +1807,8 @@ class RecipeUrlImportView(APIView):
if scrape:
response['recipe'] = helper.get_from_scraper(scrape, request)
response['images'] = list(dict.fromkeys(get_images_from_soup(scrape.soup, url)))
response['duplicates'] = Recipe.objects.filter(space=request.space, source_url=url).values('id', 'name').all()
if url and url.strip() != '':
response['duplicates'] = Recipe.objects.filter(space=request.space, source_url=url.strip()).values('id', 'name').all()
return Response(RecipeFromSourceResponseSerializer(context={'request': request}).to_representation(response), status=status.HTTP_200_OK)
else:

View File

@@ -324,6 +324,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -317,6 +317,8 @@
"Size": "Размер",
"Social_Authentication": "",
"Sort_by_new": "Сортиране по ново",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -401,6 +401,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "Ordenar a partir del més nou",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -397,6 +397,8 @@
"Size": "Velikost",
"Social_Authentication": "Přihlašování pomocí účtů sociálních sítí",
"Sort_by_new": "Seřadit od nejnovějšího",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -376,6 +376,8 @@
"Size": "Størrelse",
"Social_Authentication": "Social authenticering",
"Sort_by_new": "Sorter efter nylige",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -405,6 +405,8 @@
"Size": "Größe",
"Social_Authentication": "Login über Drittanbieter",
"Sort_by_new": "Nach Neueste sortieren",
"SourceImportHelp": "Importiere JSON im schema.org/recipe format oder eine HTML Seite mit json+ld Rezept bzw. microdata.",
"SourceImportSubtitle": "Importiere JSON oder HTML manuell.",
"SpaceLimitExceeded": "Dein Space hat ein Limit überschritten, manche Funktionen wurden eingeschränkt.",
"SpaceLimitReached": "Dieser Space hat ein Limit erreicht. Es können keine neuen Objekte von diesem Typ angelegt werden.",
"SpaceMemberHelp": "Füge Benutzer hinzu indem du Einladungen erstellst und Sie an die gewünschte Person sendest.",

View File

@@ -368,6 +368,8 @@
"Size": "Μέγεθος",
"Social_Authentication": "Ταυτοποίηση μέσω κοινωνικών δικτύων",
"Sort_by_new": "Ταξινόμηση κατά νέο",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -403,6 +403,8 @@
"Size": "Size",
"Social_Authentication": "Social Authentication",
"Sort_by_new": "Sort by new",
"SourceImportHelp": "Import JSON in schema.org/recipe format or html pages with json+ld recipe or microdata.",
"SourceImportSubtitle": "Import JSON or HTML manually.",
"SpaceLimitExceeded": "Your space has surpassed one of its limits, some functions might be restricted.",
"SpaceLimitReached": "This Space has reached a limit. No more objects of this type can be created.",
"SpaceMemberHelp": "Add users to your space by creating an Invite Link and sending it to the person you want to add.",

View File

@@ -400,6 +400,8 @@
"Size": "Tamaño",
"Social_Authentication": "Autenticación Social",
"Sort_by_new": "Ordenar por novedades",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -246,6 +246,8 @@
"Size": "Koko",
"Social_Authentication": "",
"Sort_by_new": "Lajittele uusien mukaan",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -401,6 +401,8 @@
"Size": "Taille",
"Social_Authentication": "Authentification Sociale",
"Sort_by_new": "Trier par nouveautés",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -402,6 +402,8 @@
"Size": "גודל",
"Social_Authentication": "אימות חברתי",
"Sort_by_new": "סדר ע\"י חדש",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -370,6 +370,8 @@
"Size": "Méret",
"Social_Authentication": "",
"Sort_by_new": "Rendezés legújabbak szerint",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -187,6 +187,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "Տեսակավորել ըստ նորերի",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -346,6 +346,8 @@
"Size": "Ukuran",
"Social_Authentication": "",
"Sort_by_new": "Urutkan berdasarkan baru",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -400,6 +400,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -354,6 +354,8 @@
"Size": "Dimensione",
"Social_Authentication": "Autenticazione social",
"Sort_by_new": "Prima i nuovi",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -374,6 +374,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "Rūšiuoti pagal naujumą",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -366,6 +366,8 @@
"Size": "Størrelse",
"Social_Authentication": "",
"Sort_by_new": "Sorter etter nyest",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -370,6 +370,8 @@
"Size": "Grootte",
"Social_Authentication": "Authenticeren met sociale media-account",
"Sort_by_new": "Sorteer op nieuw",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -403,6 +403,8 @@
"Size": "Rozmiar",
"Social_Authentication": "Uwierzytelnianie społecznościowe",
"Sort_by_new": "Sortuj według nowych",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -311,6 +311,8 @@
"Size": "Tamanho",
"Social_Authentication": "",
"Sort_by_new": "Ordenar por mais recente",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -388,6 +388,8 @@
"Size": "Tamanho",
"Social_Authentication": "",
"Sort_by_new": "Ordenar por novos",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -358,6 +358,8 @@
"Size": "Marime",
"Social_Authentication": "Autentificare socială",
"Sort_by_new": "Sortare după nou",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -296,6 +296,8 @@
"Size": "Размер",
"Social_Authentication": "",
"Sort_by_new": "Сортировка по новизне",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -286,6 +286,8 @@
"Size": "Velikost",
"Social_Authentication": "",
"Sort_by_new": "Razvrsti po novih",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -403,6 +403,8 @@
"Size": "Storlek",
"Social_Authentication": "Social autentisering",
"Sort_by_new": "Sortera efter ny",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -402,6 +402,8 @@
"Size": "Boyut",
"Social_Authentication": "Sosyal Kimlik Doğrulama",
"Sort_by_new": "Yeniye göre sırala",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -332,6 +332,8 @@
"Size": "Розмір",
"Social_Authentication": "",
"Sort_by_new": "",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -396,6 +396,8 @@
"Size": "大小",
"Social_Authentication": "社交认证",
"Sort_by_new": "按新旧排序",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -157,6 +157,8 @@
"Size": "",
"Social_Authentication": "",
"Sort_by_new": "按最新排序",
"SourceImportHelp": "",
"SourceImportSubtitle": "",
"SpaceLimitExceeded": "",
"SpaceLimitReached": "",
"SpaceMemberHelp": "",

View File

@@ -10,7 +10,7 @@
<v-stepper-item :title="$t('Type')" value="type" icon=" "></v-stepper-item>
<v-divider></v-divider>
<template v-if="['url','ai'].includes(importType)">
<template v-if="['url','ai', 'source'].includes(importType)">
<v-stepper-item :title="$t('Import')" value="url" icon=" "></v-stepper-item>
<v-divider></v-divider>
<template v-if="importResponse.duplicates && importResponse.duplicates.length > 0">
@@ -86,13 +86,24 @@
@click="importType = 'bookmarklet'">
</v-card>
</v-col>
<v-col cols="12" md="6">
<v-card
title="JSON/HTML"
:subtitle="$t('SourceImportSubtitle')"
prepend-icon="fa-solid fa-code"
variant="outlined"
:color="(importType == 'source') ? 'primary' : ''"
elevation="1"
@click="importType = 'source'">
</v-card>
</v-col>
</v-row>
<v-stepper-actions>
<template #prev>
<v-spacer></v-spacer>
</template>
<template #next>
<v-btn @click="stepper = 'url'" v-if="['url','ai'].includes(importType)">{{ $t('Next') }}</v-btn>
<v-btn @click="stepper = 'url'" v-if="['url','ai', 'source'].includes(importType)">{{ $t('Next') }}</v-btn>
<v-btn @click="stepper = 'app'" v-if="importType == 'app'">{{ $t('Next') }}</v-btn>
<v-btn @click="stepper = 'bookmarklet'" v-if="importType == 'bookmarklet'">{{ $t('Next') }}</v-btn>
</template>
@@ -108,12 +119,15 @@
<v-file-input v-model="image" :label="$t('Image')" v-if="importType == 'ai'" :loading="loading"></v-file-input>
<v-textarea v-model="sourceImportText" label="JSON/HTML" :loading="loading" v-if="importType == 'source'" :hint="$t('SourceImportHelp')" persistent-hint></v-textarea>
<v-stepper-actions>
<template #prev>
<v-btn @click="stepper = 'type'">{{ $t('Back') }}</v-btn>
</template>
<template #next>
<v-btn @click="loadRecipeFromUrl({url: importUrl})" v-if="importType == 'url'" :disabled="importUrl == ''" :loading="loading">{{ $t('Load') }}</v-btn>
<v-btn @click="loadRecipeFromUrl({data: sourceImportText})" v-if="importType == 'source'" :disabled="sourceImportText == ''" :loading="loading">{{ $t('Load') }}</v-btn>
<v-btn @click="uploadAndConvertImage()" v-if="importType == 'ai'" :disabled="image == null" :loading="loading">{{ $t('Load') }}</v-btn>
</template>
</v-stepper-actions>
@@ -445,8 +459,10 @@ const importApp = ref('DEFAULT')
const stepper = ref("type")
const dialog = ref(false)
const loading = ref(false)
const importUrl = ref("")
const sourceImportText = ref("")
const appImportFiles = ref<File[]>([])
const appImportDuplicates = ref(false)
const appImportLog = ref<null | ImportLog>(null)