diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-06-06 20:07:06 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-06-06 20:07:06 +0200 |
commit | 28ebf918ca25ba170bb8ad0ac3e2c740d34f9301 (patch) | |
tree | 6808590c2f6ba39b1e48a789a9d790e9b0968d5c /hyperkitty/views | |
parent | c0047ae6ec63a5ed745f733efca51ce332a296da (diff) | |
download | hyperkitty-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.py | 13 | ||||
-rw-r--r-- | hyperkitty/views/list.py | 16 | ||||
-rw-r--r-- | hyperkitty/views/search.py | 13 |
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, } |