Feature: Move viewsets to views.py

This commit is contained in:
winkidney
2019-02-20 18:03:27 +08:00
parent 32dc00fa34
commit ec6d444759
4 changed files with 29 additions and 61 deletions

View File

@@ -1,11 +1,10 @@
from rest_framework import serializers, viewsets, routers, mixins
from rest_framework.viewsets import GenericViewSet
from django.conf import settings
from rest_framework import serializers
from taggit.models import Tag
from core.models import Image, Pin
from core.permissions import IsOwnerOrReadOnly
from core.models import Image
from core.models import Pin
from django_images.models import Thumbnail
from django.conf import settings
from users.models import User
@@ -19,11 +18,6 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
)
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class ThumbnailSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Thumbnail
@@ -62,11 +56,6 @@ class ImageSerializer(serializers.ModelSerializer):
return image
class ImageViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
queryset = Image.objects.all()
serializer_class = ImageSerializer
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
@@ -121,16 +110,3 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
image = Image.objects.create(image=image_file['image'])
instance.image = image
return super(PinSerializer, self).update(instance, validated_data)
class PinViewSet(viewsets.ModelViewSet):
queryset = Pin.objects.all()
serializer_class = PinSerializer
filter_fields = ('submitter__username',)
permission_classes = [IsOwnerOrReadOnly("submitter"), ]
drf_router = routers.DefaultRouter()
drf_router.register(r'users', UserViewSet)
drf_router.register(r'pins', PinViewSet)
drf_router.register(r'images', ImageViewSet)

View File

@@ -3,10 +3,7 @@ from django.views.generic import TemplateView
from tastypie.api import Api
from core.drf_api import drf_router
from .api import ImageResource, ThumbnailResource, PinResource, UserResource
from .views import CreateImage
v1_api = Api(api_name='v1')
v1_api.register(ImageResource())
@@ -19,7 +16,6 @@ urlpatterns = [
url(r'^pins/pin-form/$', TemplateView.as_view(template_name='core/pin_form.html'),
name='pin-form'),
url(r'^pins/create-image/$', CreateImage.as_view(), name='create-image'),
url(r'^pins/tag/(?P<tag>(\w|-)+)/$', TemplateView.as_view(template_name='core/pins.html'),
name='tag-pins'),

View File

@@ -1,34 +1,30 @@
from django.http import HttpResponseRedirect
from django.conf import settings
from django.core.urlresolvers import reverse
from django.views.generic import CreateView
from django_images.models import Image
from rest_framework import viewsets, mixins, routers
from rest_framework.viewsets import GenericViewSet
from braces.views import JSONResponseMixin, LoginRequiredMixin
from django_images.models import Thumbnail
from .forms import ImageForm
from core import drf_api as api
from core.models import Image, Pin
from core.permissions import IsOwnerOrReadOnly
from users.models import User
class CreateImage(JSONResponseMixin, LoginRequiredMixin, CreateView):
template_name = None # JavaScript-only view
model = Image
form_class = ImageForm
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = api.UserSerializer
def get(self, request, *args, **kwargs):
if not request.is_ajax():
return HttpResponseRedirect(reverse('core:recent-pins'))
return super(CreateImage, self).get(request, *args, **kwargs)
def form_valid(self, form):
image = form.save()
for size in settings.IMAGE_SIZES:
Thumbnail.objects.get_or_create_at_size(image.pk, size)
return self.render_json_response({
'success': {
'id': image.id
}
})
class ImageViewSet(mixins.CreateModelMixin, GenericViewSet):
queryset = Image.objects.all()
serializer_class = api.ImageSerializer
def form_invalid(self, form):
return self.render_json_response({'error': form.errors})
class PinViewSet(viewsets.ModelViewSet):
queryset = Pin.objects.all()
serializer_class = api.PinSerializer
filter_fields = ('submitter__username',)
permission_classes = [IsOwnerOrReadOnly("submitter"), ]
drf_router = routers.DefaultRouter()
drf_router.register(r'users', UserViewSet)
drf_router.register(r'pins', PinViewSet)
drf_router.register(r'images', ImageViewSet)

View File

@@ -5,7 +5,7 @@ from django.contrib import admin
from django.views.static import serve
from rest_framework.documentation import include_docs_urls
from core.drf_api import drf_router
from core.views import drf_router
admin.autodiscover()