From 421f28f32f6f62d0e5208945f7c2522e38723e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Fri, 19 Dec 2014 20:09:56 +0100 Subject: [PATCH] paginate accounts managment --- accounts/views.py | 33 +++++++++++++++++++++++++++--- ponytracker/settings.py | 3 +++ templates/accounts/group_list.html | 6 +++++- templates/accounts/team_list.html | 6 +++++- templates/accounts/user_list.html | 4 ++++ 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/accounts/views.py b/accounts/views.py index 4ff7f92..8ebda0e 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -5,6 +5,7 @@ from django.views.decorators.http import require_http_methods from django.contrib import messages from django.db.models import Q from django.core.exceptions import ObjectDoesNotExist +from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage from django.conf import settings from django.contrib.auth.forms import PasswordChangeForm from django.forms.models import modelform_factory @@ -62,8 +63,16 @@ def profile(request): @project_perm_required('manage_accounts') def user_list(request): + paginator = Paginator(User.objects.all(), settings.ITEMS_PER_PAGE) + page = request.GET.get('page') + try: + users = paginator.page(page) + except PageNotAnInteger: + users = paginator.page(1) + except EmptyPage: + users = paginator.page(paginator.num_pages) return render(request, 'accounts/user_list.html', { - 'users': User.objects.all(), + 'users': users, 'external_auth': settings.EXTERNAL_AUTH, }) @@ -282,8 +291,17 @@ def user_remove_team(request, user, team): @project_perm_required('manage_accounts') def group_list(request): + paginator = Paginator(Group.objects.all(), settings.ITEMS_PER_PAGE) + page = request.GET.get('page') + try: + groups = paginator.page(page) + except PageNotAnInteger: + groups = paginator.page(1) + except EmptyPage: + groups = paginator.page(paginator.num_pages) return render(request, 'accounts/group_list.html', { - 'groups': Group.objects.all(), + 'groups': groups, + 'paginator': paginator, }) @@ -392,8 +410,17 @@ def group_remove_user(request, group, user): @project_perm_required('manage_accounts') def team_list(request): + paginator = Paginator(Team.objects.all(), settings.ITEMS_PER_PAGE) + page = request.GET.get('page') + try: + teams = paginator.page(page) + except PageNotAnInteger: + teams = paginator.page(1) + except EmptyPage: + teams = paginator.page(paginator.num_pages) return render(request, 'accounts/team_list.html', { - 'teams': Team.objects.all(), + 'teams': teams, + 'paginator': paginator, }) diff --git a/ponytracker/settings.py b/ponytracker/settings.py index c2360a1..0b032eb 100644 --- a/ponytracker/settings.py +++ b/ponytracker/settings.py @@ -170,3 +170,6 @@ RESERVED_PROJECT_URLS = [ GROUP_MANAGMENT = True EXTERNAL_AUTH = False + +# Pagination +ITEMS_PER_PAGE = 25 diff --git a/templates/accounts/group_list.html b/templates/accounts/group_list.html index 00dc81d..83eb793 100644 --- a/templates/accounts/group_list.html +++ b/templates/accounts/group_list.html @@ -13,7 +13,7 @@ {% block tabcontent %} +
+ {% bootstrap_pagination groups %} +
+ {% endblock %} diff --git a/templates/accounts/team_list.html b/templates/accounts/team_list.html index c8ddb7b..bf3e3ec 100644 --- a/templates/accounts/team_list.html +++ b/templates/accounts/team_list.html @@ -13,7 +13,7 @@ {% block tabcontent %} +
+ {% bootstrap_pagination teams %} +
+ {% endblock %} diff --git a/templates/accounts/user_list.html b/templates/accounts/user_list.html index 4afb28f..fa7992d 100644 --- a/templates/accounts/user_list.html +++ b/templates/accounts/user_list.html @@ -37,4 +37,8 @@ {% endfor %} +
+ {% bootstrap_pagination users %} +
+ {% endblock %}