enabled test_appadmin, fix markmin2html, fix main.py
This commit is contained in:
+3
-3
@@ -18,7 +18,7 @@ import fnmatch
|
|||||||
import os
|
import os
|
||||||
import copy
|
import copy
|
||||||
import random
|
import random
|
||||||
from gluon._compat import builtin, PY2, unicodeT, to_native
|
from gluon._compat import builtin, PY2, unicodeT, to_native, basestring
|
||||||
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
|
||||||
@@ -151,7 +151,7 @@ def LOAD(c=None, f='index', args=None, vars=None,
|
|||||||
"infinity" or "continuous" are accepted to reload indefinitely the
|
"infinity" or "continuous" are accepted to reload indefinitely the
|
||||||
component
|
component
|
||||||
"""
|
"""
|
||||||
from html import TAG, DIV, URL, SCRIPT, XML
|
from gluon.html import TAG, DIV, URL, SCRIPT, XML
|
||||||
if args is None:
|
if args is None:
|
||||||
args = []
|
args = []
|
||||||
vars = Storage(vars or {})
|
vars = Storage(vars or {})
|
||||||
@@ -430,7 +430,7 @@ def build_environment(request, response, session, store_current=True):
|
|||||||
__builtins__ = mybuiltin()
|
__builtins__ = mybuiltin()
|
||||||
elif is_pypy: # apply the same hack to pypy too
|
elif is_pypy: # apply the same hack to pypy too
|
||||||
__builtins__ = mybuiltin()
|
__builtins__ = mybuiltin()
|
||||||
else:
|
elif PY2:
|
||||||
__builtins__['__import__'] = builtin.__import__ # WHY?
|
__builtins__['__import__'] = builtin.__import__ # WHY?
|
||||||
environment['request'] = request
|
environment['request'] = request
|
||||||
environment['response'] = response
|
environment['response'] = response
|
||||||
|
|||||||
@@ -6,15 +6,10 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
from cgi import escape
|
from gluon._compat import maketrans, urllib_quote, unicodeT, _local_html_escape, to_bytes, to_native, _local_html_escape as escape
|
||||||
from gluon._compat import maketrans, urllib_quote, unicodeT, _local_html_escape, to_bytes
|
from ast import parse as ast_parse
|
||||||
|
import ast
|
||||||
|
|
||||||
try:
|
|
||||||
from ast import parse as ast_parse
|
|
||||||
import ast
|
|
||||||
except ImportError: # python 2.5
|
|
||||||
from compiler import parse
|
|
||||||
import compiler.ast as ast
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
TODO: next version should use MathJax
|
TODO: next version should use MathJax
|
||||||
@@ -950,12 +945,11 @@ def render(text,
|
|||||||
if protolinks == "default":
|
if protolinks == "default":
|
||||||
protolinks = protolinks_simple
|
protolinks = protolinks_simple
|
||||||
pp = '\n' if pretty_print else ''
|
pp = '\n' if pretty_print else ''
|
||||||
if isinstance(text, unicodeT):
|
text = to_native(text)
|
||||||
text = text.encode('utf8')
|
if not (isinstance(text, str)):
|
||||||
text = str(text or '')
|
text = str(text or '')
|
||||||
text = regex_backslash.sub(lambda m: m.group(1).translate(ttab_in), text)
|
text = regex_backslash.sub(lambda m: m.group(1).translate(ttab_in), text)
|
||||||
text = text.replace('\x05', '').replace('\r\n', '\n') # concatenate strings separeted by \\n
|
text = text.replace('\x05', '').replace('\r\n', '\n') # concatenate strings separeted by \\n
|
||||||
|
|
||||||
if URL is not None:
|
if URL is not None:
|
||||||
text = replace_at_urls(text, URL)
|
text = replace_at_urls(text, URL)
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,9 @@ def custom_importer(name, globals=None, locals=None, fromlist=None, level=-1):
|
|||||||
finally:
|
finally:
|
||||||
if import_tb:
|
if import_tb:
|
||||||
import_tb = None
|
import_tb = None
|
||||||
|
elif not(PY2) and level < 0:
|
||||||
|
# FIXME PY3 why level is < 0?
|
||||||
|
level = 0
|
||||||
|
|
||||||
return NATIVE_IMPORTER(name, globals, locals, fromlist, level)
|
return NATIVE_IMPORTER(name, globals, locals, fromlist, level)
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -974,7 +974,8 @@ class DIV(XmlComponent):
|
|||||||
"""
|
"""
|
||||||
str(COMPONENT) returns COMPONENT.xml()
|
str(COMPONENT) returns COMPONENT.xml()
|
||||||
"""
|
"""
|
||||||
return self.xml()
|
# In PY3 __str__ cannot return bytes (TypeError: __str__ returned non-string (type bytes))
|
||||||
|
return to_native(self.xml())
|
||||||
|
|
||||||
def flatten(self, render=None):
|
def flatten(self, render=None):
|
||||||
"""
|
"""
|
||||||
|
|||||||
+3
-5
@@ -27,9 +27,7 @@ from gluon.utf8 import Utf8
|
|||||||
from gluon.fileutils import listdir
|
from gluon.fileutils import listdir
|
||||||
from gluon.cfs import getcfs
|
from gluon.cfs import getcfs
|
||||||
from gluon.html import XML, xmlescape
|
from gluon.html import XML, xmlescape
|
||||||
if PY2:
|
from gluon.contrib.markmin.markmin2html import render, markmin_escape
|
||||||
# FIXME PY3
|
|
||||||
from gluon.contrib.markmin.markmin2html import render, markmin_escape
|
|
||||||
|
|
||||||
__all__ = ['translator', 'findT', 'update_all_languages']
|
__all__ = ['translator', 'findT', 'update_all_languages']
|
||||||
|
|
||||||
@@ -761,10 +759,10 @@ class translator(object):
|
|||||||
symbols = (symbols,)
|
symbols = (symbols,)
|
||||||
symbols = tuple(
|
symbols = tuple(
|
||||||
value if isinstance(value, NUMBERS)
|
value if isinstance(value, NUMBERS)
|
||||||
else xmlescape(value).translate(ttab_in)
|
else to_native(xmlescape(value)).translate(ttab_in)
|
||||||
for value in symbols)
|
for value in symbols)
|
||||||
message = self.params_substitution(message, symbols)
|
message = self.params_substitution(message, symbols)
|
||||||
return XML(message.translate(ttab_out))
|
return to_native(XML(message.translate(ttab_out)).xml())
|
||||||
|
|
||||||
def M(self, message, symbols={}, language=None,
|
def M(self, message, symbols={}, language=None,
|
||||||
lazy=None, filter=None, ftag=None, ns=None):
|
lazy=None, filter=None, ftag=None, ns=None):
|
||||||
|
|||||||
+3
-2
@@ -298,6 +298,7 @@ def wsgibase(environ, responder):
|
|||||||
env.web2py_version = web2py_version
|
env.web2py_version = web2py_version
|
||||||
#env.update(global_settings)
|
#env.update(global_settings)
|
||||||
static_file = False
|
static_file = False
|
||||||
|
http_response = None
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
@@ -439,8 +440,8 @@ def wsgibase(environ, responder):
|
|||||||
gluon.debug.dbg.do_debug(mainpyfile=request.folder)
|
gluon.debug.dbg.do_debug(mainpyfile=request.folder)
|
||||||
|
|
||||||
serve_controller(request, response, session)
|
serve_controller(request, response, session)
|
||||||
|
except HTTP as hr:
|
||||||
except HTTP as http_response:
|
http_response = hr
|
||||||
|
|
||||||
if static_file:
|
if static_file:
|
||||||
return http_response.to(responder, env=env)
|
return http_response.to(responder, env=env)
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import errno
|
|||||||
import socket
|
import socket
|
||||||
import logging
|
import logging
|
||||||
import platform
|
import platform
|
||||||
from gluon._compat import iteritems
|
from gluon._compat import iteritems, to_bytes
|
||||||
|
|
||||||
# Define Constants
|
# Define Constants
|
||||||
VERSION = '1.2.6'
|
VERSION = '1.2.6'
|
||||||
@@ -1772,7 +1772,7 @@ class WSGIWorker(Worker):
|
|||||||
if self.chunked:
|
if self.chunked:
|
||||||
self.conn.sendall(b('%x\r\n%s\r\n' % (len(data), data)))
|
self.conn.sendall(b('%x\r\n%s\r\n' % (len(data), data)))
|
||||||
else:
|
else:
|
||||||
self.conn.sendall(data)
|
self.conn.sendall(to_bytes(data))
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
self.closeConnection = True
|
self.closeConnection = True
|
||||||
except socket.error:
|
except socket.error:
|
||||||
|
|||||||
+6
-2
@@ -17,6 +17,7 @@ import re
|
|||||||
import errno
|
import errno
|
||||||
from gluon.http import HTTP
|
from gluon.http import HTTP
|
||||||
from gluon.contenttype import contenttype
|
from gluon.contenttype import contenttype
|
||||||
|
from gluon._compat import PY2
|
||||||
|
|
||||||
|
|
||||||
regex_start_range = re.compile('\d+(?=\-)')
|
regex_start_range = re.compile('\d+(?=\-)')
|
||||||
@@ -53,8 +54,11 @@ def stream_file_or_304_or_206(
|
|||||||
# if error_message is None:
|
# if error_message is None:
|
||||||
# error_message = rewrite.THREAD_LOCAL.routes.error_message % 'invalid request'
|
# error_message = rewrite.THREAD_LOCAL.routes.error_message % 'invalid request'
|
||||||
try:
|
try:
|
||||||
open = file # this makes no sense but without it GAE cannot open files
|
if PY2:
|
||||||
fp = open(static_file,'rb')
|
open_f = file # this makes no sense but without it GAE cannot open files
|
||||||
|
else:
|
||||||
|
open_f = open
|
||||||
|
fp = open_f(static_file,'rb')
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
if e[0] == errno.EISDIR:
|
if e[0] == errno.EISDIR:
|
||||||
raise HTTP(403, error_message, web2py_error='file is a directory')
|
raise HTTP(403, error_message, web2py_error='file is a directory')
|
||||||
|
|||||||
@@ -19,10 +19,10 @@ from .test_utils import *
|
|||||||
from .test_serializers import *
|
from .test_serializers import *
|
||||||
from .test_languages import *
|
from .test_languages import *
|
||||||
from .test_compileapp import *
|
from .test_compileapp import *
|
||||||
|
from .test_appadmin import *
|
||||||
|
|
||||||
if sys.version[:3] == '2.7':
|
if sys.version[:3] == '2.7':
|
||||||
from .test_is_url import *
|
from .test_is_url import *
|
||||||
from .test_appadmin import *
|
|
||||||
from .test_scheduler import *
|
from .test_scheduler import *
|
||||||
from .test_web import *
|
from .test_web import *
|
||||||
from .test_old_doctests import *
|
from .test_old_doctests import *
|
||||||
|
|||||||
@@ -106,10 +106,8 @@ class TestTranslations(unittest.TestCase):
|
|||||||
'1 quark')
|
'1 quark')
|
||||||
self.assertEqual(str(T('%s %%{quark[0]}', 2)),
|
self.assertEqual(str(T('%s %%{quark[0]}', 2)),
|
||||||
'2 quarks')
|
'2 quarks')
|
||||||
if PY2:
|
self.assertEqual(str(T.M('**Hello World**')),
|
||||||
# FIXME PY3 markmin is not supported yet
|
'<strong>Hello World</strong>')
|
||||||
self.assertEqual(str(T.M('**Hello World**')),
|
|
||||||
'<strong>Hello World</strong>')
|
|
||||||
T.force('it')
|
T.force('it')
|
||||||
self.assertEqual(str(T('Hello World')),
|
self.assertEqual(str(T('Hello World')),
|
||||||
'Salve Mondo')
|
'Salve Mondo')
|
||||||
|
|||||||
Reference in New Issue
Block a user