mirror of
https://github.com/pinry/pinry.git
synced 2025-11-14 09:05:41 +01:00
Feature: Add image creation api and api-docs of DRF api
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from rest_framework import serializers, viewsets, routers
|
from rest_framework import serializers, viewsets, routers, mixins
|
||||||
|
from rest_framework.viewsets import GenericViewSet
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
from core.models import Image, Pin
|
from core.models import Image, Pin
|
||||||
@@ -14,7 +15,7 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
fields = (
|
fields = (
|
||||||
'username',
|
'username',
|
||||||
'gravatar',
|
'gravatar',
|
||||||
'url',
|
settings.DRF_URL_FIELD_NAME,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -44,16 +45,32 @@ class ImageSerializer(serializers.ModelSerializer):
|
|||||||
"thumbnail",
|
"thumbnail",
|
||||||
"square",
|
"square",
|
||||||
)
|
)
|
||||||
|
extra_kwargs = {
|
||||||
|
"width": {"read_only": True},
|
||||||
|
"height": {"read_only": True},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
standard = ThumbnailSerializer(read_only=True)
|
standard = ThumbnailSerializer(read_only=True)
|
||||||
thumbnail = ThumbnailSerializer(read_only=True)
|
thumbnail = ThumbnailSerializer(read_only=True)
|
||||||
square = ThumbnailSerializer(read_only=True)
|
square = ThumbnailSerializer(read_only=True)
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
image = super(ImageSerializer, self).create(validated_data)
|
||||||
|
for size in settings.IMAGE_SIZES:
|
||||||
|
Thumbnail.objects.get_or_create_at_size(image.pk, size)
|
||||||
|
return image
|
||||||
|
|
||||||
|
|
||||||
|
class ImageViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
|
||||||
|
queryset = Image.objects.all()
|
||||||
|
serializer_class = ImageSerializer
|
||||||
|
|
||||||
|
|
||||||
class TagSerializer(serializers.ModelSerializer):
|
class TagSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Tag
|
model = Tag
|
||||||
fields = ("name", )
|
fields = ("name",)
|
||||||
|
|
||||||
|
|
||||||
class PinSerializer(serializers.HyperlinkedModelSerializer):
|
class PinSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
@@ -71,6 +88,7 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
"tags",
|
"tags",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
tags = serializers.SlugRelatedField(
|
tags = serializers.SlugRelatedField(
|
||||||
many=True,
|
many=True,
|
||||||
source="tag_list",
|
source="tag_list",
|
||||||
@@ -108,10 +126,11 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class PinViewSet(viewsets.ModelViewSet):
|
class PinViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Pin.objects.all()
|
queryset = Pin.objects.all()
|
||||||
serializer_class = PinSerializer
|
serializer_class = PinSerializer
|
||||||
filter_fields = ('submitter__username', )
|
filter_fields = ('submitter__username',)
|
||||||
permission_classes = [IsOwnerOrReadOnly("submitter"), ]
|
permission_classes = [IsOwnerOrReadOnly("submitter"), ]
|
||||||
|
|
||||||
|
|
||||||
drf_router = routers.DefaultRouter()
|
drf_router = routers.DefaultRouter()
|
||||||
drf_router.register(r'users', UserViewSet)
|
drf_router.register(r'users', UserViewSet)
|
||||||
drf_router.register(r'pins', PinViewSet)
|
drf_router.register(r'pins', PinViewSet)
|
||||||
|
drf_router.register(r'images', ImageViewSet)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from django.conf.urls import include, url
|
|||||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.views.static import serve
|
from django.views.static import serve
|
||||||
|
from rest_framework.documentation import include_docs_urls
|
||||||
|
|
||||||
from core.drf_api import drf_router
|
from core.drf_api import drf_router
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ urlpatterns = [
|
|||||||
# drf api
|
# drf api
|
||||||
url(r'^drf_api/', include(drf_router.urls)),
|
url(r'^drf_api/', include(drf_router.urls)),
|
||||||
url(r'^api-auth/', include('rest_framework.urls', namespace="rest_framework")),
|
url(r'^api-auth/', include('rest_framework.urls', namespace="rest_framework")),
|
||||||
|
url(r'^drf_api/docs/', include_docs_urls(title='PinryAPI', schema_url='/')),
|
||||||
|
|
||||||
# old api and views
|
# old api and views
|
||||||
url(r'^admin/', include(admin.site.urls)),
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
|
|||||||
Reference in New Issue
Block a user