1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-16 15:19:06 +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 %} {% endwith %}
{% endfor %} {% endfor %}
</ul> </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"> <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" /> <input type="hidden" name="user_email" value="{{ request.user.username }}" id="id_user_email" />
<label>{% trans "Email" %}</label><br /> <label>{% trans "Email" %}</label><br />

View File

@@ -1,18 +1,20 @@
from django.core.paginator import Paginator as DefaultPaginator 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): class Paginator(DefaultPaginator):
def get_page_range(self, current_page=1): def get_page_range(self, current_page=1):
""" """
Returns custom range of pages. Returns custom range of pages.
""" """
first_page = 1 return get_page_range(current_page, self.num_pages)
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)

View File

@@ -9,6 +9,7 @@ import urllib
import urllib2 import urllib2
import logging import logging
import chardet import chardet
from math import ceil
from urllib import quote from urllib import quote
from django.core.cache import cache from django.core.cache import cache
from django.core.urlresolvers import reverse 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.decorators import login_required
from auth import login as auth_login from auth import login as auth_login
from auth import authenticate from auth import authenticate
import seaserv
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \ from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \
get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\ get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, is_repo_owner, \ 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_starred_files, star_file, unstar_file, is_file_starred, get_dir_starred_files, \
get_dir_files_last_modified, show_delete_days, HtmlDiff, \ get_dir_files_last_modified, show_delete_days, HtmlDiff, \
TRAFFIC_STATS_ENABLED, get_user_traffic_stat TRAFFIC_STATS_ENABLED, get_user_traffic_stat
from seahub.utils.paginator import get_page_range
try: try:
from seahub.settings import DOCUMENT_CONVERTOR_ROOT from seahub.settings import DOCUMENT_CONVERTOR_ROOT
if DOCUMENT_CONVERTOR_ROOT[-1:] != '/': if DOCUMENT_CONVERTOR_ROOT[-1:] != '/':
@@ -2248,27 +2251,45 @@ def pubuser(request):
# Users are not allowed to see public information when in cloud mode. # Users are not allowed to see public information when in cloud mode.
raise Http404 raise Http404
else: 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 '''paginate'''
contacts = Contact.objects.filter(user_email=user) # 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 = [] contact_emails = []
for c in contacts: for c in contacts:
contact_emails.append(c.contact_email) contact_emails.append(c.contact_email)
for u in users: 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 u.can_be_contact = False
else: else:
u.can_be_contact = True 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', { return render_to_response('pubuser.html', {
'users': users, 'users': users,
'pubrepos_count': pubrepos_count, 'pubrepos_count': pubrepos_count,
'groups_count': groups_count, 'groups_count': groups_count,
'emailusers_count': emailusers_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)) }, context_instance=RequestContext(request))
def repo_set_password(request): def repo_set_password(request):