X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/772152c739f73fd355d7248f61d275408047662b..e75f306d2a639471d2a5eef2ff698acfcb1fbcb6:/contrib/penfield/utils.py?ds=sidebyside diff --git a/contrib/penfield/utils.py b/contrib/penfield/utils.py deleted file mode 100644 index 89d01a7..0000000 --- a/contrib/penfield/utils.py +++ /dev/null @@ -1,66 +0,0 @@ -from django.core.paginator import Paginator, EmptyPage - - -class PaginationProxy(object): - def __init__(self, paginator=None, page=None, objects=None): - self.paginator = paginator - self.page = page - self.objects = objects - - @property - def page_range(self): - if not self.paginator: - return None - - return self.paginator.page_range - - @property - def num_pages(self): - if not self.paginator: - return None - - return self.paginator.num_pages - - @property - def page_number(self): - if not self.page: - return None - - return self.page.number - - # Why doesn't this work? - #def __bool__(self): - # return bool(self.paginator) - - -def paginate(objects, per_page=None, page_number=1): - """ - Given a list of objects, return a (page, obj_list) tuple. - """ - try: - per_page = int(per_page) - except (TypeError, ValueError): - # Then either it wasn't set or it was set to an invalid value - return PaginationProxy(objects=objects) - - # There also shouldn't be pagination if the list is too short. Try count() - # first - good chance it's a queryset, where count is more efficient. - try: - if objects.count() <= per_page: - return PaginationProxy(objects=objects) - except AttributeError: - if len(objects) <= per_page: - return PaginationProxy(objects=objects) - - paginator = Paginator(objects, per_page) - try: - page_number = int(page_number) - except: - page_number = 1 - - try: - page = paginator.page(page_number) - except EmptyPage: - page = None - - return PaginationProxy(paginator, page, objects) \ No newline at end of file