mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 16:45:41 +01:00
Feature: Move viewsets to views.py
This commit is contained in:
@@ -1,11 +1,10 @@
|
|||||||
from rest_framework import serializers, viewsets, routers, mixins
|
from django.conf import settings
|
||||||
from rest_framework.viewsets import GenericViewSet
|
from rest_framework import serializers
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
from core.models import Image, Pin
|
from core.models import Image
|
||||||
from core.permissions import IsOwnerOrReadOnly
|
from core.models import Pin
|
||||||
from django_images.models import Thumbnail
|
from django_images.models import Thumbnail
|
||||||
from django.conf import settings
|
|
||||||
from users.models import User
|
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 ThumbnailSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Thumbnail
|
model = Thumbnail
|
||||||
@@ -62,11 +56,6 @@ class ImageSerializer(serializers.ModelSerializer):
|
|||||||
return image
|
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
|
||||||
@@ -121,16 +110,3 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
image = Image.objects.create(image=image_file['image'])
|
image = Image.objects.create(image=image_file['image'])
|
||||||
instance.image = image
|
instance.image = image
|
||||||
return super(PinSerializer, self).update(instance, validated_data)
|
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)
|
|
||||||
|
|||||||
@@ -3,10 +3,7 @@ from django.views.generic import TemplateView
|
|||||||
|
|
||||||
from tastypie.api import Api
|
from tastypie.api import Api
|
||||||
|
|
||||||
from core.drf_api import drf_router
|
|
||||||
from .api import ImageResource, ThumbnailResource, PinResource, UserResource
|
from .api import ImageResource, ThumbnailResource, PinResource, UserResource
|
||||||
from .views import CreateImage
|
|
||||||
|
|
||||||
|
|
||||||
v1_api = Api(api_name='v1')
|
v1_api = Api(api_name='v1')
|
||||||
v1_api.register(ImageResource())
|
v1_api.register(ImageResource())
|
||||||
@@ -19,7 +16,6 @@ urlpatterns = [
|
|||||||
|
|
||||||
url(r'^pins/pin-form/$', TemplateView.as_view(template_name='core/pin_form.html'),
|
url(r'^pins/pin-form/$', TemplateView.as_view(template_name='core/pin_form.html'),
|
||||||
name='pin-form'),
|
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'),
|
url(r'^pins/tag/(?P<tag>(\w|-)+)/$', TemplateView.as_view(template_name='core/pins.html'),
|
||||||
name='tag-pins'),
|
name='tag-pins'),
|
||||||
|
|||||||
@@ -1,34 +1,30 @@
|
|||||||
from django.http import HttpResponseRedirect
|
from rest_framework import viewsets, mixins, routers
|
||||||
from django.conf import settings
|
from rest_framework.viewsets import GenericViewSet
|
||||||
from django.core.urlresolvers import reverse
|
|
||||||
from django.views.generic import CreateView
|
|
||||||
from django_images.models import Image
|
|
||||||
|
|
||||||
from braces.views import JSONResponseMixin, LoginRequiredMixin
|
from core import drf_api as api
|
||||||
from django_images.models import Thumbnail
|
from core.models import Image, Pin
|
||||||
|
from core.permissions import IsOwnerOrReadOnly
|
||||||
from .forms import ImageForm
|
from users.models import User
|
||||||
|
|
||||||
|
|
||||||
class CreateImage(JSONResponseMixin, LoginRequiredMixin, CreateView):
|
class UserViewSet(viewsets.ModelViewSet):
|
||||||
template_name = None # JavaScript-only view
|
queryset = User.objects.all()
|
||||||
model = Image
|
serializer_class = api.UserSerializer
|
||||||
form_class = ImageForm
|
|
||||||
|
|
||||||
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):
|
class ImageViewSet(mixins.CreateModelMixin, GenericViewSet):
|
||||||
image = form.save()
|
queryset = Image.objects.all()
|
||||||
for size in settings.IMAGE_SIZES:
|
serializer_class = api.ImageSerializer
|
||||||
Thumbnail.objects.get_or_create_at_size(image.pk, size)
|
|
||||||
return self.render_json_response({
|
|
||||||
'success': {
|
|
||||||
'id': image.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
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)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ 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 rest_framework.documentation import include_docs_urls
|
||||||
|
|
||||||
from core.drf_api import drf_router
|
from core.views import drf_router
|
||||||
|
|
||||||
|
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
|||||||
Reference in New Issue
Block a user