from rest_framework import viewsets, mixins, routers from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.viewsets import GenericViewSet from core import drf_api as api from core.models import Image, Pin from core.permissions import IsOwnerOrReadOnly from users.models import User class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = api.UserSerializer class ImageViewSet(mixins.CreateModelMixin, GenericViewSet): queryset = Image.objects.all() serializer_class = api.ImageSerializer def create(self, request, *args, **kwargs): return super(ImageViewSet, self).create(request, *args, **kwargs) class PinViewSet(viewsets.ModelViewSet): queryset = Pin.objects.all() serializer_class = api.PinSerializer filter_backends = (SearchFilter, OrderingFilter) search_fields = ('=submitter__username', ) ordering_fields = ('id', ) ordering = ('id', ) 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)