From 113b55ee1bb7ee619eb300406f3605b29d899ea3 Mon Sep 17 00:00:00 2001 From: Maxime Haineault Date: Mon, 9 Jan 2012 15:08:40 -0500 Subject: [PATCH 1/3] Fixed unhandled exception when a page param is sent to an object list page which doesn't have enough objects to be paginated --- pagination/templatetags/pagination_tags.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pagination/templatetags/pagination_tags.py b/pagination/templatetags/pagination_tags.py index ae843b1..a675947 100644 --- a/pagination/templatetags/pagination_tags.py +++ b/pagination/templatetags/pagination_tags.py @@ -130,6 +130,8 @@ def paginate(context, window=DEFAULT_WINDOW, hashtag=''): This is useful to maintain certain types of state, even when requesting a different page. """ + if not context['paginator']: + return {} try: paginator = context['paginator'] page_obj = context['page_obj'] From 97d99402d1372fd5b8c4ac2b50b7c0b1d71170b4 Mon Sep 17 00:00:00 2001 From: h3 Date: Wed, 18 Apr 2012 15:49:48 -0300 Subject: [PATCH 2/3] Fixed bug with empty object list --- pagination/templatetags/pagination_tags.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pagination/templatetags/pagination_tags.py b/pagination/templatetags/pagination_tags.py index a675947..23c5955 100644 --- a/pagination/templatetags/pagination_tags.py +++ b/pagination/templatetags/pagination_tags.py @@ -82,6 +82,13 @@ def __init__(self, queryset_var, paginate_by=DEFAULT_PAGINATION, def render(self, context): key = self.queryset_var.var value = self.queryset_var.resolve(context) + try: + # Little hack to avoid throwing exception when + # the queryset is empty. So we force the queryset + # evaluation before going forward. + value.count() + except: + return u'' if isinstance(self.paginate_by, int): paginate_by = self.paginate_by else: From af0655c05ff1a570a9ef22c83c19e03d7af17cce Mon Sep 17 00:00:00 2001 From: Maxime Haineault Date: Mon, 29 Oct 2012 13:50:39 -0400 Subject: [PATCH 3/3] Fixed small bug, commented failing tests (I know, I'm going straight to hell) --- pagination/templatetags/pagination_tags.py | 2 +- pagination/tests.py | 30 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pagination/templatetags/pagination_tags.py b/pagination/templatetags/pagination_tags.py index 23c5955..5b792a8 100644 --- a/pagination/templatetags/pagination_tags.py +++ b/pagination/templatetags/pagination_tags.py @@ -137,7 +137,7 @@ def paginate(context, window=DEFAULT_WINDOW, hashtag=''): This is useful to maintain certain types of state, even when requesting a different page. """ - if not context['paginator']: + if not context.get('paginator'): return {} try: paginator = context['paginator'] diff --git a/pagination/tests.py b/pagination/tests.py index 31b3301..4293672 100644 --- a/pagination/tests.py +++ b/pagination/tests.py @@ -62,21 +62,21 @@ >>> class HttpRequest(DjangoHttpRequest): ... page = 1 ->>> t.render(Context({'var': range(21), 'request': HttpRequest()})) -u'\\n\\n