This is one of those cases of mixing your controller with your view. Please don't do that.
Look here for that... http://en.wikipedia.org/wiki/Link_prefetching and please keep your html out of your controllers. they should only go in views. On Monday, August 18, 2014 1:07:00 AM UTC-7, Giacomo Dorigo wrote: > > In the end I solved with two simple classes, without using cache, but with > two queries, one counting total items and one limited by limitby. Also I > have looked in slices and I found some pagination plugins. > > Anyway here the basic code: > > > class PageThread(object): > def __init__(self, query, items_per_page=10): > self.query = query > self.items_count = db(self.query).count() > self.items_per_page = items_per_page > self.__set_number_of_pages() > > def __set_number_of_pages(self): > self.number_of_pages = self.items_count/self.items_per_page + 1 if > self.items_count % self.items_per_page else > self.items_count/self.items_per_page > > def serve_page(self, page_id): > page_items = > db(self.query).select(limitby=((page_id-1)*self.items_per_page, > page_id*self.items_per_page)) > p = Page(page_id, page_items) > p.previous_pages = [n for n in range(1, page_id)] > p.next_pages = [n for n in range(page_id+1, > self.number_of_pages+1)] > return p > > > class Page(object): > def __init__(self, id, items): > # id is the unique number of the page in the PageThread > self.id = id > self.items = items > > def __str__(self): > return 'Page n.{}, {} items: {}'.format(self.id, len(self.items), > self.items) > > def get_page_navigation_div(self, **request_vars): > request_vars.update({'items_per_page': len(self.items)}) > previous_pages_subdiv = DIV(_class='previous-pages-subdiv') > next_pages_subdiv = DIV(_class='next-pages-subdiv') > if self.previous_pages: > request_vars.update({'page': self.id-1}) > previous_pages_subdiv.append( A('<<< previous', > _class='nav-previous-link', _href=URL(vars=request_vars)) ) > for n in self.previous_pages: > request_vars.update({'page': n}) > previous_pages_subdiv.append( A(' %s' % n, > _class='nav-previous-pages', _href=URL(vars=request_vars)) ) > for n in self.next_pages: > request_vars.update({'page': n}) > next_pages_subdiv.append( A(' %s' % n, > _class='nav-next-pages', _href=URL(vars=request_vars)) ) > if self.next_pages: > request_vars.update({'page': self.id+1}) > next_pages_subdiv.append( A(' next >>>', > _class='nav-next-link', _href=URL(vars=request_vars)) ) > return DIV(previous_pages_subdiv, next_pages_subdiv, > _class='page-navigation-div') > > def get_style(self): > style = STYLE("""\ > .page-navigation-div { > width: 1170px; > } > .page-navigation-div div { > display: inline; > } > .page-navigation-div .next-pages-subdiv{ > float: right; > } > """) > return style > > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

