From 335f46ff279f443630210be2726af6906267b3f1 Mon Sep 17 00:00:00 2001 From: ingo <ingo.leindecker@fro.at> Date: Tue, 2 Jan 2018 16:37:09 +0100 Subject: [PATCH] Added limit/offset pagination for shows, timeslots and notes. See #22 --- program/views.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/program/views.py b/program/views.py index 99474e64..63754bc7 100644 --- a/program/views.py +++ b/program/views.py @@ -13,6 +13,7 @@ from django.views.generic.list import ListView from rest_framework import permissions, serializers, status, viewsets from rest_framework.views import APIView from rest_framework.response import Response +from rest_framework.pagination import LimitOffsetPagination from program.models import Type, MusicFocus, Language, Note, Show, Category, RTRCategory, Topic, TimeSlot, Host, Schedule from program.serializers import TypeSerializer, LanguageSerializer, MusicFocusSerializer, NoteSerializer, ShowSerializer, ScheduleSerializer, CategorySerializer, RTRCategorySerializer, TopicSerializer, TimeSlotSerializer, HostSerializer, UserSerializer @@ -426,6 +427,7 @@ class APIShowViewSet(viewsets.ModelViewSet): queryset = Show.objects.none() serializer_class = ShowSerializer permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly] + pagination_class = LimitOffsetPagination required_scopes = ['shows'] @@ -446,13 +448,13 @@ class APIShowViewSet(viewsets.ModelViewSet): return Show.objects.all() - + ''' def list(self, request): """List shows""" shows = self.get_queryset() serializer = ShowSerializer(shows, many=True) return Response(serializer.data) - + ''' def create(self, request, pk=None): """ @@ -621,6 +623,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly] serializer_class = TimeSlotSerializer + pagination_class = LimitOffsetPagination queryset = TimeSlot.objects.none() required_scopes = ['timeslots'] @@ -649,12 +652,13 @@ class APITimeSlotViewSet(viewsets.ModelViewSet): return TimeSlot.objects.filter(start__gte=start, end__lte=end).order_by('start') + ''' def list(self, request, show_pk=None, schedule_pk=None): """Lists timeslots of a show""" timeslots = self.get_queryset() serializer = TimeSlotSerializer(timeslots, many=True) return Response(serializer.data) - + ''' def retrieve(self, request, pk=None, schedule_pk=None, show_pk=None): @@ -726,6 +730,7 @@ class APINoteViewSet(viewsets.ModelViewSet): queryset = Note.objects.none() serializer_class = NoteSerializer permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly] + pagination_class = LimitOffsetPagination required_scopes = ['notes'] @@ -761,12 +766,13 @@ class APINoteViewSet(viewsets.ModelViewSet): return notes + ''' def list(self, request, pk=None, timeslot_pk=None, schedule_pk=None, show_pk=None): """Lists notes""" notes = self.get_queryset() serializer = NoteSerializer(notes, many=True) return Response(serializer.data) - + ''' def create(self, request, pk=None, timeslot_pk=None, schedule_pk=None, show_pk=None): """Create a note""" -- GitLab