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,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)