From ca609a013cd3f384522511ec44361ff1de75e657 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Tue, 24 Apr 2018 18:25:28 +0300 Subject: [PATCH] Add upload image route for baner image --- api/v1/serializers/content.py | 6 ++++++ api/v1/views.py | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/api/v1/serializers/content.py b/api/v1/serializers/content.py index 975f299a..89faaee0 100644 --- a/api/v1/serializers/content.py +++ b/api/v1/serializers/content.py @@ -22,6 +22,12 @@ BASE_CONTENT_FIELDS = ( ) +class BanerImageSerializer(serializers.Serializer): + photo = Base64ImageField( + required=False, allow_empty_file=True, allow_null=True + ) + + class BanerSerializer(serializers.ModelSerializer): class Meta: diff --git a/api/v1/views.py b/api/v1/views.py index 35b1e696..703f3a1e 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -16,7 +16,8 @@ from .serializers.course import ( LessonSerializer, LessonCreateSerializer, ) from .serializers.content import ( - BanerSerializer, ImageSerializer, ImageCreateSerializer, + BanerSerializer, BanerImageSerializer, + ImageSerializer, ImageCreateSerializer, TextSerializer, TextCreateSerializer, ImageTextSerializer, ImageTextCreateSerializer, VideoSerializer, VideoCreateSerializer, @@ -79,11 +80,26 @@ class AuthorBalanceViewSet(ExtendedModelViewSet): class BanerViewSet(ExtendedModelViewSet): queryset = Baner.objects.all() serializer_class = BanerSerializer + serializer_class_map = { + 'upload_image': BanerImageSerializer, + } permission_classes = (IsAdmin,) filter_fields = ('use',) ordering_fields = ('created_at', 'update_at',) search_fields = ('text',) + @detail_route(methods=['post'], url_path='upload-image') + def upload_image(self, request, pk=None): + config = self.get_object() + serializer = self.get_serializer() + serialized_data = serializer(data=request.data) + if serialized_data.is_valid(): + config.image = serialized_data['image'] + config.save() + return Response({'success': True}) + else: + return Response({'success': False}, status=status.HTTP_400_BAD_REQUEST) + class ImageObjectViewSet(ExtendedModelViewSet): queryset = ImageObject.objects.all()