Exemplo n.º 1
0
    def get_custom_list(self, request, queryset):
        '''
        Generic function to paginate a queryset with a set of items per page.
        '''
        self.method_check(request, allowed=['get'])
        self.throttle_check(request)

        # Do the query.
        offset = int(request.GET.get('offset', 0))
        limit = min(int(request.GET.get('limit', 20)), 1000)
        paginator = Paginator(request.GET, queryset)

        try:
            object_list = paginator.get_slice(limit, offset)
        except InvalidPage:
            raise Http404("Sorry, no results on that page.")

        objects = []

        for result in object_list:
            bundle = self.build_bundle(obj=result, request=request)
            bundle = self.full_dehydrate(bundle)
            objects.append(bundle)

        page = {
            "meta": {
                "limit": limit,
                "offset": offset,
                "total_count": queryset.count()
            },
            'objects': objects,
        }

        self.log_throttled_access(request)
        return self.create_response(request, page)
Exemplo n.º 2
0
    def get_custom_list(self, request, queryset):
        '''
        Generic function to paginate a queryset with a set of items per page.
        '''
        self.method_check(request, allowed=['get'])
        self.throttle_check(request)

        # Do the query.
        offset = int(request.GET.get('offset', 0))
        limit = min(int(request.GET.get('limit', 20)), 1000)
        paginator = Paginator(request.GET, queryset)

        try:
            object_list = paginator.get_slice(limit, offset)
        except InvalidPage:
            raise Http404("Sorry, no results on that page.")

        objects = []

        for result in object_list:
            bundle = self.build_bundle(obj=result, request=request)
            bundle = self.full_dehydrate(bundle)
            objects.append(bundle)

        page = {
            "meta": {
                "limit": limit,
                "offset": offset,
                "total_count": queryset.count()
            },
            'objects': objects,
        }

        self.log_throttled_access(request)
        return self.create_response(request, page)