mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 08:35:41 +01:00
Feature: Move viewsets to views.py
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user