As you can read here the Python 2 package webhelpers.paginate
no longer exists under Python 3.
Instead they created an extra module paginate
for Python 3 (which can be found here).
When working with pyramid
under Python 2, the code looks like this:
# request is a pyramid request
def get_paginator(request, page=1, items_per_page=10):
page_url = PageURL_WebOb(request)
return Page(sql-query-here, page, url=page_url, items_per_page=items_per_page)
Under Python 3 they removed the PageURL_WebOb
from paginate
.
So is it somehow possible to retrieve the page_url
directly from the request
?
How would a correct port to Python 3 look like?
So with the help of Steve Piercy and this issue from the official paginate
git I was able to port it in the following way:
# request is a pyramid request
def get_paginator(request, page=1, items_per_page=10):
def url_maker(page_number):
query = request.GET
query["page"] = str(page_number)
return request.current_route_url(_query=query)
return Page(sql-query-here, page=page, items_per_page=items_per_page, url_maker=url_maker)