Python
Django / Python / Pagination - Ugly Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def segment_pages(page):
page.paginator.left = []
page.paginator.right = []
page.paginator.middle = []
segment = 4
adjacents = 3
p = 1
if page.paginator.num_pages > 1:
if page.paginator.num_pages < 7 + (adjacents * 2):
page.paginator.left = range(1, page.paginator.num_pages + 1)
if page.paginator.num_pages >= 7 + (adjacents * 2):
if page.number < 1 + (adjacents * 3):
page.paginator.left = range(1, 5 + (adjacents * 2))
page.paginator.right = range(page.paginator.num_pages - adjacents, page.paginator.num_pages + 1)
elif page.paginator.num_pages - (adjacents * 2) > page.number and page.number > (adjacents * 2):
page.paginator.left = range(1, 1 + adjacents)
page.paginator.middle = range(page.number - adjacents, page.number + (adjacents+1))
page.paginator.right = range(page.paginator.num_pages - adjacents, page.paginator.num_pages + 1)
else:
page.paginator.left = range(1, adjacents)
page.paginator.right = range(page.paginator.num_pages - (1 + adjacents * 3), page.paginator.num_pages + 1)
return page
def segment_pages(page):
page.paginator.left = []
page.paginator.right = []
page.paginator.middle = []
segment = 4
adjacents = 3
p = 1
if page.paginator.num_pages > 1:
if page.paginator.num_pages < 7 + (adjacents * 2):
page.paginator.left = range(1, page.paginator.num_pages + 1)
if page.paginator.num_pages >= 7 + (adjacents * 2):
if page.number < 1 + (adjacents * 3):
page.paginator.left = range(1, 5 + (adjacents * 2))
page.paginator.right = range(page.paginator.num_pages - adjacents, page.paginator.num_pages + 1)
elif page.paginator.num_pages - (adjacents * 2) > page.number and page.number > (adjacents * 2):
page.paginator.left = range(1, 1 + adjacents)
page.paginator.middle = range(page.number - adjacents, page.number + (adjacents+1))
page.paginator.right = range(page.paginator.num_pages - adjacents, page.paginator.num_pages + 1)
else:
page.paginator.left = range(1, adjacents)
page.paginator.right = range(page.paginator.num_pages - (1 + adjacents * 3), page.paginator.num_pages + 1)
return page
Refactorings
No refactoring yet !
June 26, 2008,
June 26, 2008 20:08,
permalink
No rating.
Login to rate!
Really quickly ported some PHP code to Python to support digg style pagination. only problem is it is pretty awful. Can anyone give a quick hint to make this look better