From 64a43d3d40cd6b2db89d4275c1919baddc420a4a Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sat, 21 Dec 2024 16:03:13 +0100 Subject: [PATCH] basic user file upload working --- cookbook/serializer.py | 6 +- cookbook/templates/frontend/tandoor.html | 3 + vue3/package.json | 4 +- vue3/src/apps/tandoor/Tandoor.vue | 8 +- .../components/model_editors/RecipeEditor.vue | 5 +- .../model_editors/UserFileEditor.vue | 87 +++++++------------ .../components/settings/AccountSettings.vue | 8 +- vue3/src/composables/useDjangoUrls.ts | 21 +++++ vue3/src/composables/useFileApi.ts | 46 ++++++++++ vue3/src/openapi/.openapi-generator/FILES | 1 + vue3/src/openapi/runtime.ts | 16 ++-- vue3/src/pages/ModelListPage.vue | 12 --- vue3/src/pages/SettingsPage.vue | 8 +- vue3/src/vuetify.ts | 1 + vue3/yarn.lock | 50 +++++------ 15 files changed, 157 insertions(+), 119 deletions(-) create mode 100644 vue3/src/composables/useDjangoUrls.ts create mode 100644 vue3/src/composables/useFileApi.ts diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 888c9bca0..6e7994148 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -233,15 +233,15 @@ class FoodInheritFieldSerializer(UniqueFieldsMixin, WritableNestedModelSerialize class UserFileSerializer(serializers.ModelSerializer): created_by = UserSerializer(read_only=True) - file = serializers.FileField(write_only=True) + file = serializers.FileField(write_only=True, required=False) file_download = serializers.SerializerMethodField('get_download_link') preview = serializers.SerializerMethodField('get_preview_link') - @extend_schema_field(str) + @extend_schema_field(serializers.CharField(read_only=True)) def get_download_link(self, obj): return self.context['request'].build_absolute_uri(reverse('api_download_file', args={obj.pk})) - @extend_schema_field(str) + @extend_schema_field(serializers.CharField(read_only=True)) def get_preview_link(self, obj): try: Image.open(obj.file.file.file) diff --git a/cookbook/templates/frontend/tandoor.html b/cookbook/templates/frontend/tandoor.html index 7ed82de93..cdaba2d9a 100644 --- a/cookbook/templates/frontend/tandoor.html +++ b/cookbook/templates/frontend/tandoor.html @@ -38,6 +38,9 @@ {% vite_hmr_client %} {% vite_asset 'src/apps/tandoor/main.ts' %} + diff --git a/vue3/package.json b/vue3/package.json index 68573ec04..34b3e830f 100644 --- a/vue3/package.json +++ b/vue3/package.json @@ -17,11 +17,11 @@ "pinia": "^2.1.7", "vue": "^3.5.7", "vue-draggable-plus": "^0.6.0", - "vue-i18n": "9", + "vue-i18n": "10.0.5", "vue-router": "4", "vue-simple-calendar": "^7.1.0", "vuedraggable": "^4.1.0", - "vuetify": "^3.7.3" + "vuetify": "^3.7.6" }, "devDependencies": { "@fortawesome/fontawesome-free": "^6.6.0", diff --git a/vue3/src/apps/tandoor/Tandoor.vue b/vue3/src/apps/tandoor/Tandoor.vue index 21fd1dbcc..f402a2665 100644 --- a/vue3/src/apps/tandoor/Tandoor.vue +++ b/vue3/src/apps/tandoor/Tandoor.vue @@ -16,7 +16,7 @@ - {{ useUserPreferenceStore().userSettings.user.displayName.charAt(0) }} + {{ useUserPreferenceStore().userSettings.user.displayName.charAt(0) }} @@ -55,7 +55,7 @@ {{ $t('Messages') }} - + @@ -83,7 +83,7 @@ - + @@ -150,8 +150,10 @@ import MessageListDialog from "@/components/dialogs/MessageListDialog.vue"; import {useUserPreferenceStore} from "@/stores/UserPreferenceStore"; import {TAutomation, TCookLog, TFood, TKeyword, TPropertyType, TSupermarket, TSupermarketCategory, TUnit, TUnitConversion, TUserFile, TViewLog} from "@/types/Models"; import NavigationDrawerContextMenu from "@/components/display/NavigationDrawerContextMenu.vue"; +import {useDjangoUrls} from "@/composables/useDjangoUrls"; const {lgAndUp} = useDisplay() +const {getDjangoUrl} = useDjangoUrls() useUserPreferenceStore() diff --git a/vue3/src/components/model_editors/RecipeEditor.vue b/vue3/src/components/model_editors/RecipeEditor.vue index f9a80b6c4..5ffab8afb 100644 --- a/vue3/src/components/model_editors/RecipeEditor.vue +++ b/vue3/src/components/model_editors/RecipeEditor.vue @@ -27,11 +27,14 @@ + {{ $t('Image')}} + + {{$t('Delete')}} + {{$t('Select')}} - {{ $t('Keywords') }} diff --git a/vue3/src/components/model_editors/UserFileEditor.vue b/vue3/src/components/model_editors/UserFileEditor.vue index 58d5ce406..81f69b771 100644 --- a/vue3/src/components/model_editors/UserFileEditor.vue +++ b/vue3/src/components/model_editors/UserFileEditor.vue @@ -1,32 +1,36 @@