Python 3 fixes for cursor pagination

This commit is contained in:
Tom Christie 2015-01-22 14:04:25 +00:00
parent ca372ef6ef
commit 38a2ed6f62

View File

@ -389,7 +389,8 @@ Cursor = namedtuple('Cursor', ['offset', 'reverse', 'position'])
def decode_cursor(encoded): def decode_cursor(encoded):
try: try:
tokens = urlparse.parse_qs(b64decode(encoded).decode('ascii'), keep_blank_values=True) querystring = b64decode(encoded.encode('ascii')).decode('ascii')
tokens = urlparse.parse_qs(querystring, keep_blank_values=True)
offset = int(tokens['offset'][0]) offset = int(tokens['offset'][0])
reverse = bool(int(tokens['reverse'][0])) reverse = bool(int(tokens['reverse'][0]))
position = tokens['position'][0] position = tokens['position'][0]
@ -405,7 +406,8 @@ def encode_cursor(cursor):
'reverse': '1' if cursor.reverse else '0', 'reverse': '1' if cursor.reverse else '0',
'position': cursor.position 'position': cursor.position
} }
return b64encode(urlparse.urlencode(tokens, doseq=True).encode('ascii')) querystring = urlparse.urlencode(tokens, doseq=True)
return b64encode(querystring.encode('ascii')).decode('ascii')
class CursorPagination(BasePagination): class CursorPagination(BasePagination):