Fix pagination for certain request.GET data
authorChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 13 Sep 2013 15:16:07 +0000 (10:16 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 13 Sep 2013 15:16:07 +0000 (10:16 -0500)
This didn't work at all nicely with MultiDict objects in various
circumstances and could possibly break pagination.  This fix handles
that!

This commit sponsored by Alessandro Francolini.  Thank you!

mediagoblin/tools/pagination.py

index d0f08c9443ae4dd2c7711e2426567ef2b6def8e2..855878e0e110a3dd97ed69e514edf05e2a068f85 100644 (file)
@@ -18,7 +18,7 @@ import urllib
 import copy
 from math import ceil, floor
 from itertools import izip, count
-
+from werkzeug.datastructures import MultiDict
 
 PAGINATION_DEFAULT_PER_PAGE = 30
 
@@ -98,7 +98,11 @@ class Pagination(object):
         """
         Get a page url by adding a page= parameter to the base url
         """
-        new_get_params = dict(get_params) or {}
+        if isinstance(get_params, MultiDict):
+            new_get_params = get_params.to_dict()
+        else:
+            new_get_params = dict(get_params) or {}
+
         new_get_params['page'] = page_no
         return "%s?%s" % (
             base_url, urllib.urlencode(new_get_params))