def _get_pagination_helper(self, request): if self._allow_pagination and self._native_pagination: return api_common.PaginationNativeHelper(request, self._primary_key) elif self._allow_pagination: return api_common.PaginationEmulatedHelper(request, self._primary_key) return api_common.NoPaginationHelper(request, self._primary_key)
def _get_pagination_helper(request, controller): if 'pagination_helper' in request.context: return request.context['pagination_helper'] if not controller.allow_pagination: helper = api_common.NoPaginationHelper(request, controller.primary_key) elif controller.native_pagination: helper = api_common.PaginationNativeHelper(request, controller.primary_key) else: helper = api_common.PaginationEmulatedHelper(request, controller.primary_key) request.context['pagination_helper'] = helper return helper
def test_custom_primary_key(self): items = [{'fake_id': item['id']} for item in self.items] req = FakeRequest(limit=2, marker=self.items[1]['id']) helper = common.PaginationEmulatedHelper(req, primary_key='fake_id') self.assertEqual(items[2:4], helper.paginate(items))
def test_paginate_dont_wrap_page_reverse(self): req = FakeRequest(limit=100, marker=self.items[1]['id'], page_reverse=True) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items[:1], helper.paginate(self.items))
def test_paginate_dont_wrap(self): req = FakeRequest(limit=100, marker=self.items[1]['id']) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items[2:], helper.paginate(self.items))
def test_paginate_bad_marker(self): req = FakeRequest(limit=1, marker='unknown-id') helper = common.PaginationEmulatedHelper(req) self.assertEqual([], helper.paginate(self.items))
def test_paginate_limit_higher_than_nitems(self): req = FakeRequest(limit=len(self.items) + 100) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items, helper.paginate(self.items))
def test_paginate_high_limit_page_reverse(self): req = FakeRequest(limit=len(self.items) + 100, page_reverse=True) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items, helper.paginate(self.items))
def test_paginate_limit_1_page_reverse(self): req = FakeRequest(limit=1, page_reverse=True) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items[-1:], helper.paginate(self.items))
def test_paginate_limit_1(self): req = FakeRequest(limit=1) helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items[:1], helper.paginate(self.items))
def test_paginate_no_limit_several_items(self): req = FakeRequest() helper = common.PaginationEmulatedHelper(req) self.assertEqual(self.items, helper.paginate(self.items))