1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-16 07:08:55 +00:00

Show 20 users per-page in pubuser

This commit is contained in:
zhengxie
2013-04-11 17:30:55 +08:00
parent e4ca2d8038
commit 9b6d7387da
3 changed files with 58 additions and 19 deletions

View File

@@ -33,6 +33,22 @@
{% endwith %}
{% endfor %}
</ul>
<div id="paginator">
{% if has_prev %}
<a href="?page={{ current_page|add:"-1" }}">{% trans "Previous" %}</a>
{% endif %}
{% for pr in page_range %}
{% if pr == current_page %}
<span class="cur">{{ pr }}</span>
{% else %}
<a href="?page={{ pr }}" class="pg">{{ pr }}</a>
{% endif %}
{% endfor %}
{% if has_next %}
<a href="?page={{ current_page|add:"1" }}">{% trans "Next" %}</a>
{% endif %}
</div>
<form id="add-as-contact-form" class="hide" action="{{ SITE_ROOT }}contacts/add/" method="post">
<input type="hidden" name="user_email" value="{{ request.user.username }}" id="id_user_email" />
<label>{% trans "Email" %}</label><br />

View File

@@ -1,18 +1,20 @@
from django.core.paginator import Paginator as DefaultPaginator
def get_page_range(current_page, num_pages):
first_page = 1
if num_pages <= 10:
last_page = num_pages
else:
if current_page < 6:
last_page = 10
else:
first_page = current_page - 5
last_page = current_page + 4 if current_page + 4 < num_pages else num_pages
return range(first_page, last_page + 1)
class Paginator(DefaultPaginator):
def get_page_range(self, current_page=1):
"""
Returns custom range of pages.
"""
first_page = 1
total_page = self.num_pages
if total_page <= 10:
last_page = total_page
else:
if current_page < 6:
last_page = 10
else:
first_page = current_page - 5
last_page = current_page + 4 if current_page + 4 < total_page else total_page
return range(first_page, last_page + 1)
return get_page_range(current_page, self.num_pages)

View File

@@ -9,6 +9,7 @@ import urllib
import urllib2
import logging
import chardet
from math import ceil
from urllib import quote
from django.core.cache import cache
from django.core.urlresolvers import reverse
@@ -28,6 +29,7 @@ from django.utils.translation import ugettext as _
from auth.decorators import login_required
from auth import login as auth_login
from auth import authenticate
import seaserv
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \
get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, is_repo_owner, \
@@ -71,6 +73,7 @@ from seahub.utils import render_permission_error, render_error, list_to_string,
get_starred_files, star_file, unstar_file, is_file_starred, get_dir_starred_files, \
get_dir_files_last_modified, show_delete_days, HtmlDiff, \
TRAFFIC_STATS_ENABLED, get_user_traffic_stat
from seahub.utils.paginator import get_page_range
try:
from seahub.settings import DOCUMENT_CONVERTOR_ROOT
if DOCUMENT_CONVERTOR_ROOT[-1:] != '/':
@@ -2248,27 +2251,45 @@ def pubuser(request):
# Users are not allowed to see public information when in cloud mode.
raise Http404
else:
users = get_emailusers(-1, -1)
emailusers_count = seaserv.count_emailusers()
pubrepos_count = seaserv.count_inner_pub_repos()
groups_count = len(seaserv.get_personal_groups(-1, -1))
user = request.user.username
contacts = Contact.objects.filter(user_email=user)
'''paginate'''
# Make sure page request is an int. If not, deliver first page.
try:
current_page = int(request.GET.get('page', '1'))
except ValueError:
current_page = 1
per_page = 20 # show 20 users per-page
users_plus_one = seaserv.get_emailusers(per_page * (current_page - 1),
per_page + 1)
has_prev = False if current_page == 1 else True
has_next = True if len(users_plus_one) == per_page + 1 else False
num_pages = int(ceil(emailusers_count / float(per_page)))
page_range = get_page_range(current_page, num_pages)
users = users_plus_one[:per_page]
username = request.user.username
contacts = Contact.objects.filter(user_email=username)
contact_emails = []
for c in contacts:
contact_emails.append(c.contact_email)
for u in users:
if u.email == user or u.email in contact_emails:
if u.email == username or u.email in contact_emails:
u.can_be_contact = False
else:
u.can_be_contact = True
pubrepos_count = count_inner_pub_repos()
groups_count = len(get_personal_groups(-1, -1))
emailusers_count = count_emailusers()
return render_to_response('pubuser.html', {
'users': users,
'pubrepos_count': pubrepos_count,
'groups_count': groups_count,
'emailusers_count': emailusers_count,
'current_page': current_page,
'has_prev': has_prev,
'has_next': has_next,
'page_range': page_range,
}, context_instance=RequestContext(request))
def repo_set_password(request):