# HG changeset patch # User Tero Marttila # Date 1234217996 -7200 # Node ID c5ce145fdd70374dd464b6c27c8f985fe430f3d4 # Parent 1ab95857d584c71464e289e9502223499a39ca24 fix pagination to just use page numbers... less bugs diff -r 1ab95857d584 -r c5ce145fdd70 handlers.py --- a/handlers.py Tue Feb 10 00:04:15 2009 +0200 +++ b/handlers.py Tue Feb 10 00:19:56 2009 +0200 @@ -165,16 +165,23 @@ ) @preferences.handler(prefs.formatter, prefs.count) -def channel_search (request, channel, formatter, count, q=None, skip=0, max=None) : +def channel_search (request, channel, formatter, count, q=None, page=1, max=1) : """ - Display the search form for the channel for GET, or do the search for POST + Display the search form for the channel for GET, or do the search for POST. """ + # calculate skip offset from page/count + skip = page * count + # got a search query? if q : try : # do search lines = search_index.search_simple(channel, q, count, skip) + + # update max? + if max and page > max : + max = page except log_search.NoResultsFound : # no lines @@ -194,6 +201,7 @@ channel = channel, search_query = q, count = count, + page = page, skip = skip, max = max, lines = lines, diff -r 1ab95857d584 -r c5ce145fdd70 templates/channel_search.tmpl --- a/templates/channel_search.tmpl Tue Feb 10 00:04:15 2009 +0200 +++ b/templates/channel_search.tmpl Tue Feb 10 00:19:56 2009 +0200 @@ -1,39 +1,38 @@ <%inherit file="channel.tmpl" /> -<%def name="paginate(url, count, skip, max, _more=None, **args)"> - ## update max? - % if more : - <% max = h.max(max, skip) %> - % else : - <% max = skip %> - % endif - ## number of pages - <% page_count = max / count + 1 %> +<%def name="paginate(url, count, page_cur, page_max, _more=None, _last=False, **args)"> + <%doc> + Pagination works using page numbers, with a specific number of maximum pages displayed. If _more is True, + then instead of a "Next" button, we have a "More" button, which goes to the max+1'th page, unless _last is + True, whereupon it's not displayed +
@@ -71,11 +70,11 @@ % else :
${channel.title} :: Search '${search_query}'
-${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query, _more=bool(lines))} +${paginate(urls.channel_search, count, page, max, channel=channel, q=search_query, _more=True, _last=not(bool(lines)))} % if lines : <%include file="lines.tmpl" /> % else :
No results found
% endif -${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query, _more=bool(lines))} +${paginate(urls.channel_search, count, page, max, channel=channel, q=search_query, _more=True, _last=not(bool(lines)))} % endif diff -r 1ab95857d584 -r c5ce145fdd70 urls.py --- a/urls.py Tue Feb 10 00:04:15 2009 +0200 +++ b/urls.py Tue Feb 10 00:19:56 2009 +0200 @@ -39,7 +39,7 @@ channel_link = url('/channels/{channel:cid}/link/{timestamp:ts}', handlers.channel_link ) channel_calendar = url('/channels/{channel:cid}/calendar/{year:int=0}/{month:int=0}', handlers.channel_calendar ) channel_date = url('/channels/{channel:cid}/date/{date:date}', handlers.channel_date ) -channel_search = url('/channels/{channel:cid}/search/?q=&skip:int=0&max:int=', handlers.channel_search ) +channel_search = url('/channels/{channel:cid}/search/?q=&page:int=0&max:int=1', handlers.channel_search ) # mapper mapper = urltree.URLTree(urls)