Pagination improvements, allow to select page size

This commit is contained in:
Raphael Michel
2017-12-09 19:47:47 +01:00
parent f5bf2ac4ca
commit 9e84e78215
14 changed files with 66 additions and 32 deletions

View File

@@ -35,3 +35,24 @@ class ChartContainingView:
# required by raphael.js
resp['Content-Security-Policy'] = "script-src 'unsafe-eval'; style-src 'unsafe-inline'"
return resp
class PaginationMixin:
DEFAULT_PAGINATION = 25
def get_paginate_by(self, queryset):
skey = 'stored_page_size_' + self.request.resolver_match.url_name
default = self.request.session.get(skey) or self.paginate_by or self.DEFAULT_PAGINATION
if self.request.GET.get('page_size'):
try:
size = min(250, int(self.request.GET.get("page_size")))
self.request.session[skey] = size
return min(250, int(self.request.GET.get("page_size")))
except ValueError:
return default
return default
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['page_size'] = self.get_paginate_by(None)
return ctx