summaryrefslogtreecommitdiff
path: root/postgresqleu/util/pagination.py
diff options
context:
space:
mode:
Diffstat (limited to 'postgresqleu/util/pagination.py')
-rw-r--r--postgresqleu/util/pagination.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/postgresqleu/util/pagination.py b/postgresqleu/util/pagination.py
new file mode 100644
index 00000000..47a5e3a6
--- /dev/null
+++ b/postgresqleu/util/pagination.py
@@ -0,0 +1,27 @@
+from django.core.paginator import Paginator, EmptyPage, InvalidPage
+
+
+def simple_pagination(request, objects, num_per_page):
+ paginator = Paginator(objects, num_per_page)
+ try:
+ page = int(request.GET.get('page', '1'))
+ except ValueError:
+ page = 1
+
+ try:
+ queryset = paginator.page(page)
+ except (EmptyPage, InvalidPage):
+ queryset = paginator.page(paginator.num_pages)
+
+ if paginator.num_pages > 15:
+ if page < paginator.num_pages - 13:
+ firstpage = max(1, page - 7)
+ lastpage = firstpage + 15
+ else:
+ lastpage = min(paginator.num_pages + 1, page + 8)
+ firstpage = lastpage - 15
+ page_range = list(range(firstpage, lastpage))
+ else:
+ page_range = paginator.page_range
+
+ return (queryset, paginator, page_range)