X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/15422e438784e42868c1d8ab142e4db902a5b72d..e75f306d2a639471d2a5eef2ff698acfcb1fbcb6:/contrib/penfield/utils.py?ds=inline diff --git a/contrib/penfield/utils.py b/contrib/penfield/utils.py deleted file mode 100644 index e9415c0..0000000 --- a/contrib/penfield/utils.py +++ /dev/null @@ -1,65 +0,0 @@ -from django.core.paginator import Paginator - - -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 - - 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