Source code for coffee.contrib.parse.functions

import math
import re


[docs]def get_pagination(request, cls, page_size, page): rx = re.compile(r"&page=[0-9]") path = request.get_full_path() if rx.search(path): previous = re.sub(rx, f"&page={page - 1}", path) next = re.sub(rx, f"&page={page + 1}", path) else: previous = path + f"&page={page - 1}" next = path + f"&page={page + 1}" count = cls.objects.count() pages = math.ceil(count / page_size) if page - 1 == 0: previous = None if page + 1 > pages: next = None return { "previous": previous, "next": next, "current_page": page, "number_of_pages": pages, "count": count, }