enabled test_appadmin, fix markmin2html, fix main.py

This commit is contained in:
ilvalle
2016-06-15 20:17:58 +02:00
parent 0f648eee56
commit 2aeb063890
10 changed files with 31 additions and 32 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, 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 -12
View File
@@ -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)
+3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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')
+1 -1
View File
@@ -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 *
+2 -4
View File
@@ -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')