summaryrefslogtreecommitdiffstats
path: root/hyperkitty/views
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-06-06 20:07:06 +0200
committerAurélien Bompard <aurelien@bompard.org>2013-06-06 20:07:06 +0200
commit28ebf918ca25ba170bb8ad0ac3e2c740d34f9301 (patch)
tree6808590c2f6ba39b1e48a789a9d790e9b0968d5c /hyperkitty/views
parentc0047ae6ec63a5ed745f733efca51ce332a296da (diff)
downloadhyperkitty-28ebf918ca25ba170bb8ad0ac3e2c740d34f9301.tar.gz
hyperkitty-28ebf918ca25ba170bb8ad0ac3e2c740d34f9301.tar.xz
hyperkitty-28ebf918ca25ba170bb8ad0ac3e2c740d34f9301.zip
Greatly improve the pager
Diffstat (limited to 'hyperkitty/views')
-rw-r--r--hyperkitty/views/accounts.py13
-rw-r--r--hyperkitty/views/list.py16
-rw-r--r--hyperkitty/views/search.py13
3 files changed, 6 insertions, 36 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py
index 946f965..d7e35c2 100644
--- a/hyperkitty/views/accounts.py
+++ b/hyperkitty/views/accounts.py
@@ -24,7 +24,6 @@ import logging
from django.conf import settings
from django.core.urlresolvers import reverse
from django.core.exceptions import SuspiciousOperation, ObjectDoesNotExist
-from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth import authenticate, login, get_backends
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
@@ -37,7 +36,7 @@ from social_auth.backends import SocialAuthBackend
from hyperkitty.models import UserProfile, Rating, Favorite, LastView
from hyperkitty.views.forms import RegistrationForm, UserProfileForm
-from hyperkitty.lib import get_store, FLASH_MESSAGES
+from hyperkitty.lib import get_store, FLASH_MESSAGES, paginate
logger = logging.getLogger(__name__)
@@ -182,15 +181,7 @@ def last_views(request):
).order_by("view_date")
except Favorite.DoesNotExist:
last_views = []
- last_views_paginator = Paginator(last_views, 10)
- last_views_page = request.GET.get('lvpage')
- try:
- last_views = last_views_paginator.page(last_views_page)
- except PageNotAnInteger:
- last_views = last_views_paginator.page(1)
- except EmptyPage:
- last_views = last_views_paginator.page(last_views_paginator.num_pages)
- last_views.page_range = [ p+1 for p in range(last_views_paginator.num_pages) ]
+ last_views = paginate(last_views, request.GET.get('lvpage'))
for last_view in last_views:
thread = store.get_thread(last_view.list_address, last_view.threadid)
if thread.date_active.replace(tzinfo=utc) > last_view.view_date:
diff --git a/hyperkitty/views/list.py b/hyperkitty/views/list.py
index 610b148..c1fda99 100644
--- a/hyperkitty/views/list.py
+++ b/hyperkitty/views/list.py
@@ -26,7 +26,6 @@ from collections import namedtuple, defaultdict
from django.shortcuts import redirect, render
from django.conf import settings
from django.core.urlresolvers import reverse
-from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils import formats
from django.utils.dateformat import format as date_format
from django.utils.timezone import utc
@@ -34,7 +33,7 @@ from django.http import Http404
from hyperkitty.models import Tag, Favorite, LastView
from hyperkitty.lib import get_months, get_store, get_display_dates, daterange
-from hyperkitty.lib import FLASH_MESSAGES
+from hyperkitty.lib import FLASH_MESSAGES, paginate
from hyperkitty.lib.voting import get_votes, set_message_votes
@@ -142,17 +141,7 @@ def _thread_list(request, mlist, threads, template_name='thread_list.html', extr
> last_view_obj.view_date:
thread.unread = True
- paginator = Paginator(threads, 10)
- page_num = request.GET.get('page')
- try:
- threads = paginator.page(page_num)
- except PageNotAnInteger:
- # If page is not an integer, deliver first page.
- threads = paginator.page(1)
- except EmptyPage:
- # If page is out of range (e.g. 9999), deliver last page of results.
- threads = paginator.page(paginator.num_pages)
- threads.page_range = [ p+1 for p in range(paginator.num_pages) ]
+ threads = paginate(threads, request.GET.get('page'))
flash_messages = []
flash_msg = request.GET.get("msg")
@@ -163,7 +152,6 @@ def _thread_list(request, mlist, threads, template_name='thread_list.html', extr
context = {
'mlist' : mlist,
- 'current_page': page_num,
'threads': threads,
'participants': len(participants),
'months_list': get_months(store, mlist.name),
diff --git a/hyperkitty/views/search.py b/hyperkitty/views/search.py
index 199a836..9ea224a 100644
--- a/hyperkitty/views/search.py
+++ b/hyperkitty/views/search.py
@@ -24,7 +24,7 @@ from django.shortcuts import render
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger, Page
from hyperkitty.models import Tag
-from hyperkitty.lib import get_store
+from hyperkitty.lib import get_store, paginate
from hyperkitty.lib.voting import get_votes, set_message_votes
from .list import _thread_list
@@ -91,20 +91,11 @@ def search(request, page=1):
raise Http404("No archived mailing-list by that name.")
paginator = SearchPaginator(messages, 10, total)
- try:
- messages = paginator.page(page_num)
- except PageNotAnInteger:
- # If page is not an integer, deliver first page.
- messages = paginator.page(1)
- except EmptyPage:
- # If page is out of range (e.g. 9999), deliver last page of results.
- messages = paginator.page(paginator.num_pages)
- messages.page_range = [ p+1 for p in range(paginator.num_pages) ]
+ messages = paginate(messages, page_num, paginator=paginator)
context = {
'mlist' : mlist,
"query": query,
- 'current_page': page_num,
'messages': messages,
'total': total,
}