def on_get(self, req: falcon.Request, resp: falcon.Response, args: dict) -> None: """ --- summary: Get all movies in the database tags: - Movie parameters: - in: query schema: MovieQuerySchema produces: - application/json responses: 200: description: List of movies schema: type: array items: MovieSchema 401: description: Unauthorized """ db = req.context["db"] page = args.get("page") per_page = args.get("per_page") resp.status = falcon.HTTP_OK all_items_query = db.query(Movie) paginated_query = Paginator(all_items_query, page=page, per_page=per_page) resp._data = paginated_query
def test_paginated_query(): db, Item, Part = create_test_model() p = Paginator(db.query(Item), page=2, per_page=5) items_in_page = list(p) assert items_in_page[0].id == 6 assert items_in_page[1].id == 7
def test_abstract_list_pagination(): """Yes indeed, the paginator can be used too without anything to actually be paginated. How quaint! """ p = Paginator(query=None, page=1, per_page=20, total=490) assert p.page == 1 assert not p.has_prev assert p.has_next assert p.total == 490 assert p.num_pages == 25 assert p.next_num == 2 assert list(p.pages) == [1, 2, 3, 4, None, 24, 25] p.page = 10 assert list(p.pages) == [1, 2, None, 7, 8, 9, 10, 11, 12, 13, None, 24, 25]
def test_paginated_joined_query(): db, Item, Part = create_test_model() item = db.query(Item).first() p = Paginator(item.parts, page=2, per_page=5) items_in_page = list(p) assert items_in_page[0].id == 6 assert items_in_page[1].id == 7
def test_list_pagination(): """The paginator is a helper class that can be used with any iterable object. """ items = range(1, 491) p = Paginator(items, page=1, per_page=20) assert p.page == 1 assert not p.has_prev assert p.has_next assert p.total == 490 assert p.num_pages == 25 assert p.next_num == 2 assert list(p.pages) == [1, 2, 3, 4, None, 24, 25] p.page = 10 assert list(p.pages) == [1, 2, None, 7, 8, 9, 10, 11, 12, 13, None, 24, 25] assert list(p) == list(range(181, 201))
def test_bool_paginator(): assert Paginator(range(5)) assert not Paginator([])