diff options
author | Bernhard Keller <keller_bernhard@web.de> | 2011-05-19 20:37:04 +0200 |
---|---|---|
committer | Bernhard Keller <keller_bernhard@web.de> | 2011-05-19 20:37:04 +0200 |
commit | 44e3e917fbfc89409bac08d500c5a9246e0dc5f4 (patch) | |
tree | 5c6f1f29fafe28652ebc91ecbb34e9fdc348ec94 /mediagoblin/util.py | |
parent | ca3ca51c5a1fa4c10b88c851c9bd04ae7978cb41 (diff) | |
download | mediagoblin-44e3e917fbfc89409bac08d500c5a9246e0dc5f4.tar.lz mediagoblin-44e3e917fbfc89409bac08d500c5a9246e0dc5f4.tar.xz mediagoblin-44e3e917fbfc89409bac08d500c5a9246e0dc5f4.zip |
removed request arg from Pagination class
added get_page_url() in Pagination class, to generate proper urls without losing
other get arguments
Diffstat (limited to 'mediagoblin/util.py')
-rw-r--r-- | mediagoblin/util.py | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/mediagoblin/util.py b/mediagoblin/util.py index b79d6b05..9247ac19 100644 --- a/mediagoblin/util.py +++ b/mediagoblin/util.py @@ -28,7 +28,7 @@ from mediagoblin import globals as mgoblin_globals import urllib from math import ceil - +import copy TESTS_ENABLED = False def _activate_testing(): @@ -297,20 +297,27 @@ def setup_gettext(locale): class Pagination(object): """ - Pagination class + Pagination class, + initialization through __init__(self, page=1, per_page=2, cursor) + get actual data slice through __call__() """ - def __init__(self, per_page, cursor, request): - try: - self.page = int(request.str_GET['page']) - except KeyError: - self.page = 1 + def __init__(self, cursor, page=1, per_page=2): + """ + initializes Pagination + -- page, requested page + -- per_page, number of objects per page + -- cursor, db cursor + """ + self.page = page self.per_page = per_page self.cursor = cursor - self.request = request self.total_count = self.cursor.count() def __call__(self): + """ + returns slice of objects for the requested page + """ return self.cursor.skip((self.page-1)*self.per_page) \ .limit(self.per_page) @@ -338,7 +345,14 @@ class Pagination(object): yield None yield num last = num - - def url_generator(self, page): - return '%s?%s' % (self.request.path_info, \ - urllib.urlencode({'page':str(page)})) + + def get_page_url(self, path_info, page_no, get_params=None): + """ + Get a new page based of the path_info, the new page number, + and existing get parameters. + """ + new_get_params = copy.copy(get_params or {}) + new_get_params['page'] = page_no + return "%s?%s" % ( + path_info, urllib.urlencode(new_get_params)) + |