diff --git a/cookbook/views/api.py b/cookbook/views/api.py index bcd302dea..f1f196da4 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -1449,6 +1449,22 @@ class RecipeViewSet(LoggingMixin, viewsets.ModelViewSet): return Response(serializer.errors, 400) + @extend_schema(responses=RecipeSerializer(many=False)) + @decorators.action(detail=True, pagination_class=None, methods=['PATCH'], serializer_class=RecipeSerializer) + def delete_external(self, request, pk): + obj = self.get_object() + if obj.get_space() != request.space and has_group_permission(request.user, ['user']): + raise PermissionDenied(detail='You do not have the required permission to perform this action', code=403) + + if obj.storage: + get_recipe_provider(obj).delete_file(obj) + obj.storage = None + obj.file_path = '' + obj.file_uid = '' + obj.save() + + return Response(self.serializer_class(obj, many=False, context={'request': request}).data) + @extend_schema_view(list=extend_schema( parameters=[OpenApiParameter(name='food_id', description='ID of food to filter for', type=int), diff --git a/vue3/src/components/model_editors/RecipeEditor.vue b/vue3/src/components/model_editors/RecipeEditor.vue index 21b11e3d7..2188a6684 100644 --- a/vue3/src/components/model_editors/RecipeEditor.vue +++ b/vue3/src/components/model_editors/RecipeEditor.vue @@ -83,8 +83,10 @@ - {{ $t('Split') }} - {{ $t('Merge') }} + {{ $t('Split') }} + {{ $t('Merge') }} @@ -109,6 +111,15 @@ +
+ {{ $t('ExternalRecipe') }} + + + {{ $t('delete_title', {type: $t('ExternalRecipe')}) }} + + +
+ @@ -143,7 +154,7 @@