A class for page processing such as "Goooooooooogle". If you pass the total number of items, the number of items per page, and the number of pages to be displayed at one time in the constructor, and pass the page currently displayed by the content method, the minimum number of pages is returned in min and the maximum number of pages is returned in max. come. I want to write more elegantly.
#coding:utf-8
'''
Created on 2012/09/23
@author: fumix
'''
class Pager():
'''
Page processing class
'''
def __init__(self,total,page,width):
'''
Constructor
'''
self.total = total
self.page = page
self.width = width
def content(self,current):
#Maximum number of pages
max_pagecount = self.total / self.page + 1
#Maximum number of pages<When the number of displayed pages
if max_pagecount < self.width:
min = 1
max = max_pagecount
#Maximum number of pages<Current page+When half the number of displayed pages
elif max_pagecount < current + self.width / 2 :
min = current - self.width / 2
max = max_pagecount
#Current page-Half the number of displayed pages<When 1
elif current - self.width / 2 < 1:
min = 1
max = self.width
#other than that
else:
min = current - self.width / 2
max = current + self.width / 2
return {'min':min,'max':max}
def _test():
page = Pager(532, 20, 10)
print page.content(22)
if __name__ == '__main__':
_test()