fix compileapp

This commit is contained in:
ilvalle
2016-06-13 20:20:49 +02:00
parent 34f753be56
commit 48209f5bdf
7 changed files with 19 additions and 16 deletions
+3 -3
View File
@@ -18,7 +18,7 @@ import fnmatch
import os import os
import copy import copy
import random import random
from gluon._compat import builtin, PY2 from gluon._compat import builtin, PY2, unicodeT, to_native
from gluon.storage import Storage, List from gluon.storage import Storage, List
from gluon.template import parse_template from gluon.template import parse_template
from gluon.restricted import restricted, compile2 from gluon.restricted import restricted, compile2
@@ -650,8 +650,8 @@ def run_controller_in(controller, function, environment):
vars = response._vars vars = response._vars
if response.postprocessing: if response.postprocessing:
vars = reduce(lambda vars, p: p(vars), response.postprocessing, vars) vars = reduce(lambda vars, p: p(vars), response.postprocessing, vars)
if isinstance(vars, unicode): if isinstance(vars, unicodeT):
vars = vars.encode('utf8') vars = to_native(vars)
elif hasattr(vars, 'xml') and callable(vars.xml): elif hasattr(vars, 'xml') and callable(vars.xml):
vars = vars.xml() vars = vars.xml()
return vars return vars
+3 -3
View File
@@ -8,7 +8,7 @@
Support for smart import syntax for web2py applications Support for smart import syntax for web2py applications
------------------------------------------------------- -------------------------------------------------------
""" """
from gluon._compat import builtin, unicodeT, PY2 from gluon._compat import builtin, unicodeT, PY2, to_native
import os import os
import sys import sys
import threading import threading
@@ -47,8 +47,8 @@ def custom_importer(name, globals=None, locals=None, fromlist=None, level=-1):
If the import fails, it falls back on naive_importer If the import fails, it falls back on naive_importer
""" """
if isinstance(name, unicodeT) and PY2: if isinstance(name, unicodeT):
name = name.encode('utf8') name = to_native(name)
globals = globals or {} globals = globals or {}
locals = locals or {} locals = locals or {}
+5 -1
View File
@@ -21,6 +21,7 @@ import logging
from gluon.http import HTTP from gluon.http import HTTP
from gzip import open as gzopen from gzip import open as gzopen
from gluon.recfile import generate from gluon.recfile import generate
from gluon._compat import PY2
__all__ = [ __all__ = [
'parse_version', 'parse_version',
@@ -100,7 +101,10 @@ def read_file(filename, mode='r'):
"""Returns content from filename, making sure to close the file explicitly """Returns content from filename, making sure to close the file explicitly
on exit. on exit.
""" """
f = open(filename, mode) if PY2 or 'b' in mode:
f = open(filename, mode)
else:
f = open(filename, mode, encoding="utf8")
try: try:
return f.read() return f.read()
finally: finally:
+2 -2
View File
@@ -13,7 +13,7 @@ Contains the classes for the global used variables:
- Session - Session
""" """
from gluon._compat import pickle, StringIO, copyreg, Cookie, urlparse, PY2, iteritems, to_unicode, to_native from gluon._compat import pickle, StringIO, copyreg, Cookie, urlparse, PY2, iteritems, to_unicode, to_native, unicodeT
from gluon.storage import Storage, List from gluon.storage import Storage, List
from gluon.streamer import streamer, stream_file_or_304_or_206, DEFAULT_CHUNK_SIZE from gluon.streamer import streamer, stream_file_or_304_or_206, DEFAULT_CHUNK_SIZE
from gluon.contenttype import contenttype from gluon.contenttype import contenttype
@@ -569,7 +569,7 @@ class Response(Storage):
if not request: if not request:
request = current.request request = current.request
if isinstance(stream, (str, unicode)): if isinstance(stream, (str, unicodeT)):
stream_file_or_304_or_206(stream, stream_file_or_304_or_206(stream,
chunk_size=chunk_size, chunk_size=chunk_size,
request=request, request=request,
+3 -4
View File
@@ -263,7 +263,6 @@ class TemplateParser(object):
# This will end up as # This will end up as
# "%s(%s, escape=False)" % (self.writer, value) # "%s(%s, escape=False)" % (self.writer, value)
self.writer = writer self.writer = writer
# Dictionary of custom name lexers to use. # Dictionary of custom name lexers to use.
if isinstance(lexers, dict): if isinstance(lexers, dict):
self.lexers = lexers self.lexers = lexers
@@ -448,7 +447,7 @@ class TemplateParser(object):
fileobj.close() fileobj.close()
except IOError: except IOError:
self._raise_error('Unable to open included view file: ' + filepath) self._raise_error('Unable to open included view file: ' + filepath)
text = to_native(text)
return text return text
def include(self, content, filename): def include(self, content, filename):
@@ -788,7 +787,7 @@ def parse_template(filename,
raise RestrictedError(filename, '', 'Unable to find the file') raise RestrictedError(filename, '', 'Unable to find the file')
else: else:
text = filename.read() text = filename.read()
text = to_native(text)
# Use the file contents to get a parsed template and return it. # Use the file contents to get a parsed template and return it.
return str(TemplateParser(text, context=context, path=path, lexers=lexers, delimiters=delimiters)) return str(TemplateParser(text, context=context, path=path, lexers=lexers, delimiters=delimiters))
@@ -885,7 +884,7 @@ def render(content="hello world",
""" """
# here to avoid circular Imports # here to avoid circular Imports
try: try:
from globals import Response from gluon.globals import Response
except ImportError: except ImportError:
# Working standalone. Build a mock Response object. # Working standalone. Build a mock Response object.
Response = DummyResponse Response = DummyResponse
+1 -1
View File
@@ -18,9 +18,9 @@ from .test_tools import *
from .test_utils import * from .test_utils import *
from .test_serializers import * from .test_serializers import *
from .test_languages import * from .test_languages import *
from .test_compileapp import *
if sys.version[:3] == '2.7': if sys.version[:3] == '2.7':
from .test_compileapp import *
from .test_is_url import * from .test_is_url import *
from .test_appadmin import * from .test_appadmin import *
from .test_scheduler import * from .test_scheduler import *
+2 -2
View File
@@ -1457,7 +1457,7 @@ class AuthJWT(object):
def f(*args, **kwargs): def f(*args, **kwargs):
try: try:
token = self.get_jwt_token_from_request(token_param=token_param) token = self.get_jwt_token_from_request(token_param=token_param)
except HTTP, e: except HTTP as e:
if required: if required:
raise e raise e
token = None token = None
@@ -4759,7 +4759,7 @@ class Auth(object):
self._wiki.automenu() self._wiki.automenu()
class Crud(object): class Crud(object): # pragma: no cover
def url(self, f=None, args=None, vars=None): def url(self, f=None, args=None, vars=None):
""" """