Code

Ticket #1033: list_detail_oneindexed.diff

File list_detail_oneindexed.diff, 1.4 KB (added by Tom Tobin <korpios@…>, 9 years ago)

Implements one-indexed list_detail generic view

Line 
1Index: django/views/generic/list_detail.py
2===================================================================
3--- django/views/generic/list_detail.py (revision 1587)
4+++ django/views/generic/list_detail.py (working copy)
5@@ -39,22 +39,22 @@
6     lookup_kwargs = extra_lookup_kwargs.copy()
7     if paginate_by:
8         paginator = ObjectPaginator(mod, lookup_kwargs, paginate_by)
9-        page = request.GET.get('page', 0)
10+        page = request.GET.get('page', 1)
11         try:
12-            object_list = paginator.get_page(page)
13-        except InvalidPage:
14-            if page == 0 and allow_empty:
15+            page = int(page)
16+            object_list = paginator.get_page(page - 1)
17+        except (InvalidPage, ValueError):
18+            if page == 1 and allow_empty:
19                 object_list = []
20             else:
21                 raise Http404
22-        page = int(page)
23         c = Context(request, {
24             'object_list': object_list,
25             'is_paginated': paginator.pages > 1,
26             'results_per_page': paginate_by,
27-            'has_next': paginator.has_next_page(page),
28-            'has_previous': paginator.has_previous_page(page),
29-            'page': page + 1,
30+            'has_next': paginator.has_next_page(page - 1),
31+            'has_previous': paginator.has_previous_page(page - 1),
32+            'page': page,
33             'next': page + 1,
34             'previous': page - 1,
35             'pages': paginator.pages,