From dbb0cbc05e6740e86b73a8de5db1391e8b342fa4 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Wed, 28 Aug 2019 17:18:52 +0300 Subject: [PATCH 1/2] refactored endpoint to upload an image --- apps/gallery/serializers.py | 9 +++++++++ apps/gallery/views.py | 2 ++ 2 files changed, 11 insertions(+) diff --git a/apps/gallery/serializers.py b/apps/gallery/serializers.py index a3176b79..112ca432 100644 --- a/apps/gallery/serializers.py +++ b/apps/gallery/serializers.py @@ -5,6 +5,10 @@ from . import models class ImageSerializer(serializers.ModelSerializer): """Serializer for model Image.""" + # REQUEST + image = serializers.ImageField(write_only=True) + # RESPONSE + file = serializers.SerializerMethodField() class Meta: """Meta class""" @@ -12,4 +16,9 @@ class ImageSerializer(serializers.ModelSerializer): fields = ( 'id', 'image', + 'file' ) + + def get_file(self, obj): + """Get absolute URL path""" + return obj.get_full_image_url(request=self.context.get('request')) diff --git a/apps/gallery/views.py b/apps/gallery/views.py index 8a9195c3..31c08084 100644 --- a/apps/gallery/views.py +++ b/apps/gallery/views.py @@ -1,10 +1,12 @@ from rest_framework import generics +from rest_framework.permissions import AllowAny from . import models, serializers class ImageUploadView(generics.CreateAPIView): """Upload image to gallery""" + permission_classes = (AllowAny, ) model = models.Image queryset = models.Image.objects.all() serializer_class = serializers.ImageSerializer From 7a1d5e269c6876308392f68e57ba148406c95a8a Mon Sep 17 00:00:00 2001 From: Anatoly Date: Wed, 28 Aug 2019 17:25:16 +0300 Subject: [PATCH 2/2] refactored ImageSerializer --- apps/gallery/serializers.py | 13 ++++++++----- apps/gallery/views.py | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/gallery/serializers.py b/apps/gallery/serializers.py index 112ca432..9efe2911 100644 --- a/apps/gallery/serializers.py +++ b/apps/gallery/serializers.py @@ -6,19 +6,22 @@ from . import models class ImageSerializer(serializers.ModelSerializer): """Serializer for model Image.""" # REQUEST - image = serializers.ImageField(write_only=True) + file = serializers.ImageField(source='image', + write_only=True) + # RESPONSE - file = serializers.SerializerMethodField() + url = serializers.SerializerMethodField() + class Meta: """Meta class""" model = models.Image fields = ( 'id', - 'image', - 'file' + 'file', + 'url' ) - def get_file(self, obj): + def get_url(self, obj): """Get absolute URL path""" return obj.get_full_image_url(request=self.context.get('request')) diff --git a/apps/gallery/views.py b/apps/gallery/views.py index 31c08084..a3b61727 100644 --- a/apps/gallery/views.py +++ b/apps/gallery/views.py @@ -1,12 +1,12 @@ from rest_framework import generics -from rest_framework.permissions import AllowAny +from utils.permissions import IsAuthenticatedAndTokenIsValid from . import models, serializers class ImageUploadView(generics.CreateAPIView): """Upload image to gallery""" - permission_classes = (AllowAny, ) + permission_classes = (IsAuthenticatedAndTokenIsValid, ) model = models.Image queryset = models.Image.objects.all() serializer_class = serializers.ImageSerializer