paginate accounts managment

This commit is contained in:
Élie Bouttier 2014-12-19 20:09:56 +01:00
parent e40adcfba1
commit 421f28f32f
5 changed files with 47 additions and 5 deletions

View file

@ -5,6 +5,7 @@ from django.views.decorators.http import require_http_methods
from django.contrib import messages from django.contrib import messages
from django.db.models import Q from django.db.models import Q
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.conf import settings from django.conf import settings
from django.contrib.auth.forms import PasswordChangeForm from django.contrib.auth.forms import PasswordChangeForm
from django.forms.models import modelform_factory from django.forms.models import modelform_factory
@ -62,8 +63,16 @@ def profile(request):
@project_perm_required('manage_accounts') @project_perm_required('manage_accounts')
def user_list(request): 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', { return render(request, 'accounts/user_list.html', {
'users': User.objects.all(), 'users': users,
'external_auth': settings.EXTERNAL_AUTH, 'external_auth': settings.EXTERNAL_AUTH,
}) })
@ -282,8 +291,17 @@ def user_remove_team(request, user, team):
@project_perm_required('manage_accounts') @project_perm_required('manage_accounts')
def group_list(request): 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', { 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') @project_perm_required('manage_accounts')
def team_list(request): 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', { return render(request, 'accounts/team_list.html', {
'teams': Team.objects.all(), 'teams': teams,
'paginator': paginator,
}) })

View file

@ -170,3 +170,6 @@ RESERVED_PROJECT_URLS = [
GROUP_MANAGMENT = True GROUP_MANAGMENT = True
EXTERNAL_AUTH = False EXTERNAL_AUTH = False
# Pagination
ITEMS_PER_PAGE = 25

View file

@ -13,7 +13,7 @@
{% block tabcontent %} {% block tabcontent %}
<ul class="list-group"> <ul class="list-group">
{% if not groups.exists %} {% if not paginator.count %}
<li class="list-group-item" style="line-height: 48px;"> <li class="list-group-item" style="line-height: 48px;">
<em>There are no groups quit yet.</em> <em>There are no groups quit yet.</em>
</li> </li>
@ -34,4 +34,8 @@
{% endfor %} {% endfor %}
</ul> </ul>
<div style="text-align: center;">
{% bootstrap_pagination groups %}
</div>
{% endblock %} {% endblock %}

View file

@ -13,7 +13,7 @@
{% block tabcontent %} {% block tabcontent %}
<ul class="list-group"> <ul class="list-group">
{% if not teams.exists %} {% if not paginator.count %}
<li class="list-group-item" style="line-height: 48px;"> <li class="list-group-item" style="line-height: 48px;">
<em>There are no teams quite yet.</em> <em>There are no teams quite yet.</em>
</li> </li>
@ -37,4 +37,8 @@
{% endfor %} {% endfor %}
</ul> </ul>
<div style="text-align: center;">
{% bootstrap_pagination teams %}
</div>
{% endblock %} {% endblock %}

View file

@ -37,4 +37,8 @@
{% endfor %} {% endfor %}
</ul> </ul>
<div style="text-align: center;">
{% bootstrap_pagination users %}
</div>
{% endblock %} {% endblock %}