Merge pull request #1723 from leonelcamara/patch-6
Small unicode compatibility py3 fixes
This commit is contained in:
+8
-3
@@ -11,7 +11,7 @@ HTTP statuses helpers
|
||||
"""
|
||||
|
||||
import re
|
||||
from gluon._compat import iteritems, unicodeT
|
||||
from gluon._compat import iteritems, unicodeT, to_bytes
|
||||
|
||||
__all__ = ['HTTP', 'redirect']
|
||||
|
||||
@@ -111,6 +111,8 @@ class HTTP(Exception):
|
||||
if not body:
|
||||
body = status
|
||||
if isinstance(body, (str, bytes, bytearray)):
|
||||
if isinstance(body, unicodeT):
|
||||
body = to_bytes(body) # This must be done before len
|
||||
headers['Content-Length'] = len(body)
|
||||
rheaders = []
|
||||
for k, v in iteritems(headers):
|
||||
@@ -123,12 +125,15 @@ class HTTP(Exception):
|
||||
return ['']
|
||||
elif isinstance(body, (str, bytes, bytearray)):
|
||||
if isinstance(body, unicodeT):
|
||||
body = body.encode('utf-8')
|
||||
body = to_bytes(body)
|
||||
return [body]
|
||||
elif hasattr(body, '__iter__'):
|
||||
return body
|
||||
else:
|
||||
return [str(body)]
|
||||
body = str(body)
|
||||
if isinstance(body, unicodeT):
|
||||
body = to_bytes(body)
|
||||
return [body]
|
||||
|
||||
@property
|
||||
def message(self):
|
||||
|
||||
+4
-4
@@ -10,7 +10,7 @@ Restricted environment to execute application's code
|
||||
"""
|
||||
|
||||
import sys
|
||||
from gluon._compat import pickle, ClassType
|
||||
from gluon._compat import pickle, ClassType, unicodeT, to_bytes
|
||||
import traceback
|
||||
import types
|
||||
import os
|
||||
@@ -192,10 +192,10 @@ class RestrictedError(Exception):
|
||||
# safely show an useful message to the user
|
||||
try:
|
||||
output = self.output
|
||||
if isinstance(output, unicode):
|
||||
output = output.encode("utf8")
|
||||
elif not isinstance(output, str):
|
||||
if not isinstance(output, str, bytes, bytearray):
|
||||
output = str(output)
|
||||
if isinstance(output, unicodeT):
|
||||
output = to_bytes(output)
|
||||
except:
|
||||
output = ""
|
||||
return output
|
||||
|
||||
Reference in New Issue
Block a user