diff --git a/jupyterhub/handlers/pages.py b/jupyterhub/handlers/pages.py index c9a15d6a..c079b3b9 100644 --- a/jupyterhub/handlers/pages.py +++ b/jupyterhub/handlers/pages.py @@ -10,10 +10,11 @@ from datetime import datetime from http.client import responses from jinja2 import TemplateNotFound +from python_paginate.web.tornado_paginate import Pagination from tornado import gen from tornado import web -from tornado.httputil import url_concat, urlparse -from python_paginate.web.tornado_paginate import Pagination +from tornado.httputil import url_concat +from tornado.httputil import urlparse from .. import __version__ from .. import orm @@ -407,9 +408,9 @@ class AdminHandler(BaseHandler): page, per_page, offset = Pagination.get_page_args(self) _per_page = self.get_arguments("per_page") - # No arg called per_page in the URL, + # No arg called per_page in the URL, # avoiding default value from the python_paginate lib - if per_page==10 and len(_per_page)==0: + if per_page == 10 and len(_per_page) == 0: per_page = DEFAULT_PER_PAGE available = {'name', 'admin', 'running', 'last_activity'} @@ -452,7 +453,13 @@ class AdminHandler(BaseHandler): # get User.col.desc() order objects ordered = [getattr(c, o)() for c, o in zip(cols, orders)] - users = self.db.query(orm.User).outerjoin(orm.Spawner).order_by(*ordered).limit(per_page).offset(offset) + users = ( + self.db.query(orm.User) + .outerjoin(orm.Spawner) + .order_by(*ordered) + .limit(per_page) + .offset(offset) + ) users = [self._user_from_orm(u) for u in users] from itertools import chain @@ -461,10 +468,14 @@ class AdminHandler(BaseHandler): running.extend(s for s in u.spawners.values() if s.active) total = self.db.query(orm.User.id).count() - pagination = Pagination(url=self.request.uri, total=total, record_name='users', - display_msg = 'Displaying {record_name} {start} - {end}. Total {record_name}: {total}', - page=page, per_page=per_page) - + pagination = Pagination( + url=self.request.uri, + total=total, + record_name='users', + display_msg='Displaying {record_name} {start} - {end}. Total {record_name}: {total}', + page=page, + per_page=per_page, + ) auth_state = await self.current_user.get_auth_state() html = self.render_template( @@ -479,7 +490,7 @@ class AdminHandler(BaseHandler): allow_named_servers=self.allow_named_servers, named_server_limit_per_user=self.named_server_limit_per_user, server_version='{} {}'.format(__version__, self.version_hash), - pagination=pagination + pagination=pagination, ) self.finish(html) diff --git a/requirements.txt b/requirements.txt index a6cdb504..74215f5a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,8 +9,8 @@ pamela prometheus_client>=0.0.21 psutil>=5.6.5; sys_platform == 'win32' python-dateutil +python-paginate requests SQLAlchemy>=1.1 tornado>=5.0 traitlets>=4.3.2 -python-paginate \ No newline at end of file