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:
@@ -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 />
|
||||||
|
@@ -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)
|
|
||||||
|
@@ -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):
|
||||||
|
Reference in New Issue
Block a user