mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 07:23:00 +00:00
Moving Pagination class to its own file
This commit is contained in:
@@ -23,6 +23,7 @@ from ..utils import admin_only
|
|||||||
from ..utils import maybe_future
|
from ..utils import maybe_future
|
||||||
from ..utils import url_path_join
|
from ..utils import url_path_join
|
||||||
from .base import BaseHandler
|
from .base import BaseHandler
|
||||||
|
from ..pagination import Pagination
|
||||||
|
|
||||||
|
|
||||||
class RootHandler(BaseHandler):
|
class RootHandler(BaseHandler):
|
||||||
@@ -605,70 +606,6 @@ class HealthCheckHandler(BaseHandler):
|
|||||||
def get(self, *args):
|
def get(self, *args):
|
||||||
self.finish()
|
self.finish()
|
||||||
|
|
||||||
|
|
||||||
class Pagination():
|
|
||||||
|
|
||||||
_page_name = 'page'
|
|
||||||
_per_page_name = 'per_page'
|
|
||||||
_default_page = 1
|
|
||||||
_default_per_page = 100
|
|
||||||
_max_per_page = 250
|
|
||||||
_record_name = 'users'
|
|
||||||
_display_msg = (
|
|
||||||
'Displaying {record_name} <b>{start} - {end}</b>. Total {record_name}: {total}'
|
|
||||||
)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
"""Potential parameters.
|
|
||||||
**url**: URL in request
|
|
||||||
**page**: current page in use
|
|
||||||
**per_page**: number of records to display in the page. By default 100
|
|
||||||
**total**: total records considered while paginating
|
|
||||||
**display_msg**: informative text for pagination
|
|
||||||
**record_name**: name of the record, showed in pagination info
|
|
||||||
"""
|
|
||||||
self.page = kwargs.get(self._page_name, 1)
|
|
||||||
|
|
||||||
if self.per_page > self._max_per_page:
|
|
||||||
self.per_page = self._max_per_page
|
|
||||||
|
|
||||||
self.total = int(kwargs.get('total', 0))
|
|
||||||
self.display_msg = kwargs.get('display_msg', self._display_msg)
|
|
||||||
|
|
||||||
self.record_name = kwargs.get('record_name', self._record_name)
|
|
||||||
self.url = kwargs.get('url') or self.get_url()
|
|
||||||
self.init_values()
|
|
||||||
|
|
||||||
def init_values(self):
|
|
||||||
self._cached = {}
|
|
||||||
self.skip = (self.page - 1) * self.per_page
|
|
||||||
pages = divmod(self.total, self.per_page)
|
|
||||||
self.total_pages = pages[0] + 1 if pages[1] else pages[0]
|
|
||||||
|
|
||||||
self.has_prev = self.page > 1
|
|
||||||
self.has_next = self.page < self.total_pages
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_page_args(self, handler):
|
|
||||||
self.page = handler.get_argument(self._page_name, self._default_page)
|
|
||||||
self.per_page = handler.get_argument(
|
|
||||||
self._per_page_name, self._default_per_page
|
|
||||||
)
|
|
||||||
try:
|
|
||||||
self.per_page = int(self.per_page)
|
|
||||||
if self.per_page > self._max_per_page:
|
|
||||||
self.per_page = self._max_per_page
|
|
||||||
except:
|
|
||||||
self.per_page = self._default_per_page
|
|
||||||
|
|
||||||
try:
|
|
||||||
self.page = int(self.page)
|
|
||||||
except:
|
|
||||||
self.page = self._default_page
|
|
||||||
|
|
||||||
return self.page, self.per_page, self.per_page * (self.page - 1)
|
|
||||||
|
|
||||||
|
|
||||||
default_handlers = [
|
default_handlers = [
|
||||||
(r'/', RootHandler),
|
(r'/', RootHandler),
|
||||||
(r'/home', HomeHandler),
|
(r'/home', HomeHandler),
|
||||||
|
65
jupyterhub/pagination.py
Normal file
65
jupyterhub/pagination.py
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
"""Basic class to manage pagination utils."""
|
||||||
|
# Copyright (c) Jupyter Development Team.
|
||||||
|
# Distributed under the terms of the Modified BSD License.
|
||||||
|
|
||||||
|
class Pagination():
|
||||||
|
|
||||||
|
_page_name = 'page'
|
||||||
|
_per_page_name = 'per_page'
|
||||||
|
_default_page = 1
|
||||||
|
_default_per_page = 100
|
||||||
|
_max_per_page = 250
|
||||||
|
_record_name = 'users'
|
||||||
|
_display_msg = (
|
||||||
|
'Displaying {record_name} <b>{start} - {end}</b>. Total {record_name}: {total}'
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
"""Potential parameters.
|
||||||
|
**url**: URL in request
|
||||||
|
**page**: current page in use
|
||||||
|
**per_page**: number of records to display in the page. By default 100
|
||||||
|
**total**: total records considered while paginating
|
||||||
|
**display_msg**: informative text for pagination
|
||||||
|
**record_name**: name of the record, showed in pagination info
|
||||||
|
"""
|
||||||
|
self.page = kwargs.get(self._page_name, 1)
|
||||||
|
|
||||||
|
if self.per_page > self._max_per_page:
|
||||||
|
self.per_page = self._max_per_page
|
||||||
|
|
||||||
|
self.total = int(kwargs.get('total', 0))
|
||||||
|
self.display_msg = kwargs.get('display_msg', self._display_msg)
|
||||||
|
|
||||||
|
self.record_name = kwargs.get('record_name', self._record_name)
|
||||||
|
self.url = kwargs.get('url') or self.get_url()
|
||||||
|
self.init_values()
|
||||||
|
|
||||||
|
def init_values(self):
|
||||||
|
self._cached = {}
|
||||||
|
self.skip = (self.page - 1) * self.per_page
|
||||||
|
pages = divmod(self.total, self.per_page)
|
||||||
|
self.total_pages = pages[0] + 1 if pages[1] else pages[0]
|
||||||
|
|
||||||
|
self.has_prev = self.page > 1
|
||||||
|
self.has_next = self.page < self.total_pages
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_page_args(self, handler):
|
||||||
|
self.page = handler.get_argument(self._page_name, self._default_page)
|
||||||
|
self.per_page = handler.get_argument(
|
||||||
|
self._per_page_name, self._default_per_page
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
self.per_page = int(self.per_page)
|
||||||
|
if self.per_page > self._max_per_page:
|
||||||
|
self.per_page = self._max_per_page
|
||||||
|
except:
|
||||||
|
self.per_page = self._default_per_page
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.page = int(self.page)
|
||||||
|
except:
|
||||||
|
self.page = self._default_page
|
||||||
|
|
||||||
|
return self.page, self.per_page, self.per_page * (self.page - 1)
|
Reference in New Issue
Block a user