return int(num) except ValueError: raise e def page(self, number, softlimit=False): try: return super(ExPaginator, self).page(number) except InvalidPage, e: number = self._ensure_int(number, e) if number > self.num_pages and softlimit: return self.page(self.num_pages, softlimit=False) else: raise e security = ClassSecurityInfo() security.setDefaultAccess("allow") InitializeClass(ExPaginator) class DiggPaginator(ExPaginator): """ Based on Django's default paginator, it adds "Digg-style" page ranges with a leading block of pages, an optional middle block, and another block at the end of the page range. They are available as attributes on the page: {# with: page = digg_paginator.page(1) #} {% for num in page.leading_range %} ... {% for num in page.main_range %} ... {% for num in page.trailing_range %} ...