From dca4639b8521026d995e2e0add87c86c4ee4a793 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 12 Dec 2017 19:23:19 +0100 Subject: [PATCH] fix urllib quote_plus, close #1822 --- gluon/_compat.py | 4 ++-- gluon/rewrite.py | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/gluon/_compat.py b/gluon/_compat.py index f7562b12..a814ed9f 100644 --- a/gluon/_compat.py +++ b/gluon/_compat.py @@ -26,7 +26,7 @@ if PY2: from email.MIMEText import MIMEText from email.Charset import add_charset, QP as charset_QP from urllib import FancyURLopener, urlencode, urlopen - from urllib import quote as urllib_quote, unquote as urllib_unquote + from urllib import quote as urllib_quote, unquote as urllib_unquote, quote_plus as urllib_quote_plus from string import maketrans from types import ClassType import cgi @@ -94,7 +94,7 @@ else: from email.header import Header from email.charset import Charset, add_charset, QP as charset_QP from urllib.request import FancyURLopener, urlopen - from urllib.parse import quote as urllib_quote, unquote as urllib_unquote, urlencode + from urllib.parse import quote as urllib_quote, unquote as urllib_unquote, urlencode, quote_plus as urllib_quote_plus from http import cookiejar as cookielib from xmlrpc.client import ProtocolError import html # warning, this is the python3 module and not the web2py html module diff --git a/gluon/rewrite.py b/gluon/rewrite.py index fa4ac972..31e1bd16 100644 --- a/gluon/rewrite.py +++ b/gluon/rewrite.py @@ -22,12 +22,11 @@ import re import logging import traceback import threading -import urllib from gluon.storage import Storage, List from gluon.http import HTTP from gluon.fileutils import abspath, read_file from gluon.settings import global_settings -from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange +from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange, urllib_quote_plus isdir = os.path.isdir isfile = os.path.isfile @@ -235,7 +234,7 @@ def try_rewrite_on_error(http_response, request, environ, ticket=None): path_info, query_string = uri, '' query_string += \ 'code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ - (status, ticket, urllib.quote_plus( + (status, ticket, urllib_quote_plus( request.env.request_uri), request.url) if uri.startswith('http://') or uri.startswith('https://'): # make up a response @@ -270,12 +269,12 @@ def try_redirect_on_error(http_object, request, ticket=None): elif '?' in redir: url = '%s&code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ (redir, status, ticket, - urllib.quote_plus(request.env.request_uri), + urllib_quote_plus(request.env.request_uri), request.url) else: url = '%s?code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ (redir, status, ticket, - urllib.quote_plus(request.env.request_uri), + urllib_quote_plus(request.env.request_uri), request.url) return HTTP(303, 'You are being redirected here' % url, Location=url) return http_object