Merge pull request #1423 from gi0baro/master

Updated pyDAL to 16.08
This commit is contained in:
mdipierro
2016-08-16 18:49:10 -05:00
committed by GitHub
54 changed files with 227 additions and 70 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ from gluon.utils import web2py_uuid
from gluon.tools import Config from gluon.tools import Config
from gluon.compileapp import find_exposed_functions from gluon.compileapp import find_exposed_functions
from glob import glob from glob import glob
from pydal._compat import iteritems, PY2, pickle, xrange, urlopen, to_bytes, StringIO, to_native from gluon._compat import iteritems, PY2, pickle, xrange, urlopen, to_bytes, StringIO, to_native
import shutil import shutil
import platform import platform
+3 -3
View File
@@ -10,7 +10,7 @@ import datetime
import copy import copy
import gluon.contenttype import gluon.contenttype
import gluon.fileutils import gluon.fileutils
from pydal._compat import iteritems from gluon._compat import iteritems
try: try:
import pygraphviz as pgv import pygraphviz as pgv
@@ -213,7 +213,7 @@ def select():
if is_imap: if is_imap:
step = 3 step = 3
stop = start + step stop = start + step
table = None table = None
@@ -421,7 +421,7 @@ def ccache():
'oldest': time.time(), 'oldest': time.time(),
'keys': [] 'keys': []
} }
disk = copy.copy(ram) disk = copy.copy(ram)
total = copy.copy(ram) total = copy.copy(ram)
disk['keys'] = [] disk['keys'] = []
+157
View File
@@ -0,0 +1,157 @@
import sys
import hashlib
import os
PY2 = sys.version_info[0] == 2
_identity = lambda x: x
if PY2:
import cPickle as pickle
from cStringIO import StringIO
import copy_reg as copyreg
from HTMLParser import HTMLParser
import urlparse
from htmlentitydefs import entitydefs, name2codepoint
import __builtin__ as builtin
import thread
import Cookie
import urllib2
import Queue
import ConfigParser as configparser
from email.MIMEBase import MIMEBase
from email.Header import Header
from email import Encoders, Charset
from email.MIMEMultipart import MIMEMultipart
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 string import maketrans
from types import ClassType
import cgi
import cookielib
BytesIO = StringIO
reduce = reduce
hashlib_md5 = hashlib.md5
iterkeys = lambda d: d.iterkeys()
itervalues = lambda d: d.itervalues()
iteritems = lambda d: d.iteritems()
integer_types = (int, long)
string_types = (str, unicode)
text_type = unicode
basestring = basestring
xrange = xrange
long = long
unichr = unichr
unicodeT = unicode
def implements_bool(cls):
cls.__nonzero__ = cls.__bool__
del cls.__bool__
return cls
def implements_iterator(cls):
cls.next = cls.__next__
del cls.__next__
return cls
def to_bytes(obj, charset='utf-8', errors='strict'):
if obj is None:
return None
if isinstance(obj, (bytes, bytearray, buffer)):
return bytes(obj)
if isinstance(obj, unicode):
return obj.encode(charset, errors)
raise TypeError('Expected bytes')
def to_native(obj, charset='utf8', errors='strict'):
if obj is None or isinstance(obj, str):
return obj
return obj.encode(charset, errors)
else:
import pickle
from io import StringIO, BytesIO
import copyreg
from functools import reduce
from html.parser import HTMLParser
from http import cookies as Cookie
from urllib import parse as urlparse
from urllib import request as urllib2
from html.entities import entitydefs, name2codepoint
import builtins as builtin
import _thread as thread
import configparser
import queue as Queue
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email import encoders as Encoders
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 http import cookiejar as cookielib
import html # warning, this is the python3 module and not the web2py html module
hashlib_md5 = lambda s: hashlib.md5(bytes(s, 'utf8'))
iterkeys = lambda d: iter(d.keys())
itervalues = lambda d: iter(d.values())
iteritems = lambda d: iter(d.items())
integer_types = (int,)
string_types = (str,)
text_type = str
basestring = str
xrange = range
long = int
unichr = chr
unicodeT = str
maketrans = str.maketrans
ClassType = type
implements_iterator = _identity
implements_bool = _identity
def to_bytes(obj, charset='utf-8', errors='strict'):
if obj is None:
return None
if isinstance(obj, (bytes, bytearray, memoryview)):
return bytes(obj)
if isinstance(obj, str):
return obj.encode(charset, errors)
raise TypeError('Expected bytes')
def to_native(obj, charset='utf8', errors='strict'):
if obj is None or isinstance(obj, str):
return obj
return obj.decode(charset, errors)
def with_metaclass(meta, *bases):
"""Create a base class with a metaclass."""
# This requires a bit of explanation: the basic idea is to make a dummy
# metaclass for one level of class instantiation that replaces itself with
# the actual metaclass.
class metaclass(meta):
__call__ = type.__call__
__init__ = type.__init__
def __new__(cls, name, this_bases, d):
if this_bases is None:
return type.__new__(cls, name, (), d)
return meta(name, bases, d)
return metaclass('temporary_class', None, {})
def to_unicode(obj, charset='utf-8', errors='strict'):
if obj is None:
return None
if not isinstance(obj, bytes):
return text_type(obj)
return obj.decode(charset, errors)
# shortcuts
pjoin = os.path.join
exists = os.path.exists
+1 -1
View File
@@ -22,7 +22,7 @@ from gluon.fileutils import read_file, write_file, parse_version
from gluon.restricted import RestrictedError from gluon.restricted import RestrictedError
from gluon.settings import global_settings from gluon.settings import global_settings
from gluon.cache import CacheOnDisk from gluon.cache import CacheOnDisk
from pydal._compat import urlopen, to_native from gluon._compat import urlopen, to_native
if not global_settings.web2py_runtime_gae: if not global_settings.web2py_runtime_gae:
import site import site
+1 -1
View File
@@ -40,7 +40,7 @@ except ImportError:
have_settings = False have_settings = False
from pydal.contrib import portalocker from pydal.contrib import portalocker
from pydal._compat import pickle, thread, to_bytes, to_native, hashlib_md5 from gluon._compat import pickle, thread, to_bytes, to_native, hashlib_md5
try: try:
import psutil import psutil
+1 -1
View File
@@ -15,7 +15,7 @@ Note:
from os import stat from os import stat
from gluon.fileutils import read_file from gluon.fileutils import read_file
from pydal._compat import thread from gluon._compat import thread
cfs = {} # for speed-up cfs = {} # for speed-up
cfs_lock = thread.allocate_lock() # and thread safety cfs_lock = thread.allocate_lock() # and thread safety
+1 -1
View File
@@ -18,7 +18,7 @@ import fnmatch
import os import os
import copy import copy
import random import random
from pydal._compat import builtin, PY2, unicodeT, to_native, to_bytes, iteritems, basestring, reduce, xrange, long from gluon._compat import builtin, PY2, unicodeT, to_native, to_bytes, iteritems, basestring, reduce, xrange, long
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
+1 -1
View File
@@ -19,7 +19,7 @@ Additions:
- .pickle: application/python-pickle - .pickle: application/python-pickle
- .w2p': application/w2p - .w2p': application/w2p
""" """
from pydal._compat import to_native from gluon._compat import to_native
__all__ = ['contenttype'] __all__ = ['contenttype']
+1 -1
View File
@@ -29,7 +29,7 @@ is restarted (or reload=True is passed).
""" """
import os import os
import json import json
from pydal._compat import thread, configparser from gluon._compat import thread, configparser
from gluon.globals import current from gluon.globals import current
locker = thread.allocate_lock() locker = thread.allocate_lock()
+1 -1
View File
@@ -42,7 +42,7 @@ revision3.com
viddler.com viddler.com
""" """
from __future__ import print_function from __future__ import print_function
from pydal._compat import FancyURLopener, urllib_quote from gluon._compat import FancyURLopener, urllib_quote
import re import re
import cgi import cgi
+1 -1
View File
@@ -6,7 +6,7 @@
from __future__ import print_function from __future__ import print_function
import re import re
import urllib import urllib
from pydal._compat import maketrans, urllib_quote, unicodeT, to_bytes, to_native, xrange from gluon._compat import maketrans, urllib_quote, unicodeT, to_bytes, to_native, xrange
from gluon.utils import local_html_escape as escape from gluon.utils import local_html_escape as escape
from ast import parse as ast_parse from ast import parse as ast_parse
import ast import ast
+1 -1
View File
@@ -29,7 +29,7 @@
An interactive, stateful AJAX shell that runs Python code on the server. An interactive, stateful AJAX shell that runs Python code on the server.
""" """
from __future__ import print_function from __future__ import print_function
from pydal._compat import ClassType, pickle, StringIO from gluon._compat import ClassType, pickle, StringIO
import logging import logging
import new import new
import sys import sys
+1 -1
View File
@@ -16,7 +16,7 @@ mostly for testing purposes
Some examples at the bottom. Some examples at the bottom.
""" """
from __future__ import print_function from __future__ import print_function
from pydal._compat import urllib2, cookielib, iteritems, to_native, urlencode, to_bytes from gluon._compat import urllib2, cookielib, iteritems, to_native, urlencode, to_bytes
import re import re
import time import time
+1 -1
View File
@@ -8,7 +8,7 @@
Support for smart import syntax for web2py applications Support for smart import syntax for web2py applications
------------------------------------------------------- -------------------------------------------------------
""" """
from pydal._compat import builtin, unicodeT, PY2, to_native from gluon._compat import builtin, unicodeT, PY2, to_native
import os import os
import sys import sys
import threading import threading
+1 -1
View File
@@ -14,7 +14,7 @@ Debugger support classes
import logging import logging
import pdb import pdb
import sys import sys
from pydal._compat import Queue from gluon._compat import Queue
logger = logging.getLogger("web2py") logger = logging.getLogger("web2py")
+1 -1
View File
@@ -21,7 +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 pydal._compat import PY2 from gluon._compat import PY2
__all__ = [ __all__ = [
'parse_version', 'parse_version',
+3 -3
View File
@@ -13,7 +13,7 @@ Contains the classes for the global used variables:
- Session - Session
""" """
from pydal._compat import pickle, StringIO, copyreg, Cookie, urlparse, PY2, iteritems, to_unicode, to_native, unicodeT 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
@@ -436,7 +436,7 @@ class Response(Storage):
self._vars.update(b) self._vars.update(b)
self._view_environment.update(self._vars) self._view_environment.update(self._vars)
if view: if view:
from pydal._compat import StringIO from gluon._compat import StringIO
(obody, oview) = (self.body, self.view) (obody, oview) = (self.body, self.view)
(self.body, self.view) = (StringIO(), view) (self.body, self.view) = (StringIO(), view)
run_view_in(self._view_environment) run_view_in(self._view_environment)
@@ -1192,7 +1192,7 @@ class Session(Storage):
def _try_store_in_file(self, request, response): def _try_store_in_file(self, request, response):
try: try:
if (not response.session_id or if (not response.session_id or
not response.session_filename or not response.session_filename or
self._forget self._forget
or self._unchanged(response)): or self._unchanged(response)):
+1 -1
View File
@@ -7,7 +7,7 @@
| License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html) | License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)
""" """
from __future__ import print_function from __future__ import print_function
from pydal._compat import xrange from gluon._compat import xrange
from gluon.utils import local_html_escape from gluon.utils import local_html_escape
import re import re
+5 -5
View File
@@ -20,7 +20,7 @@ import urllib
import base64 import base64
from gluon import sanitizer, decoder from gluon import sanitizer, decoder
import itertools import itertools
from pydal._compat import reduce, pickle, copyreg, HTMLParser, name2codepoint, iteritems, unichr, unicodeT, urllib_quote, to_bytes, to_native, to_unicode, basestring, urlencode, implements_bool from gluon._compat import reduce, pickle, copyreg, HTMLParser, name2codepoint, iteritems, unichr, unicodeT, urllib_quote, to_bytes, to_native, to_unicode, basestring, urlencode, implements_bool
from gluon.utils import local_html_escape from gluon.utils import local_html_escape
import marshal import marshal
@@ -127,7 +127,7 @@ def xmlescape(data, quote=True):
data=str(data) data=str(data)
data = to_bytes(data, 'utf8', 'xmlcharrefreplace') data = to_bytes(data, 'utf8', 'xmlcharrefreplace')
# ... and do the escaping # ... and do the escaping
data = local_html_escape(data, quote) data = local_html_escape(data, quote)
return data return data
@@ -945,7 +945,7 @@ class DIV(XmlComponent):
fa = b'' fa = b''
for name, value in attr: for name, value in attr:
fa += (b' %s="%s"') % (to_bytes(name), xmlescape(value, True)) fa += (b' %s="%s"') % (to_bytes(name), xmlescape(value, True))
# get the xml for the inner components # get the xml for the inner components
co = b''.join([xmlescape(component) for component in self.components]) co = b''.join([xmlescape(component) for component in self.components])
return (fa, co) return (fa, co)
@@ -975,7 +975,7 @@ class DIV(XmlComponent):
""" """
# In PY3 __str__ cannot return bytes (TypeError: __str__ returned non-string (type bytes)) # In PY3 __str__ cannot return bytes (TypeError: __str__ returned non-string (type bytes))
return to_native(self.xml()) return to_native(self.xml())
def flatten(self, render=None): def flatten(self, render=None):
""" """
Returns the text stored by the DIV object rendered by the render function Returns the text stored by the DIV object rendered by the render function
@@ -1440,7 +1440,7 @@ class STYLE(DIV):
def xml(self): def xml(self):
(fa, co) = self._xml() (fa, co) = self._xml()
fa = to_native(fa) fa = to_native(fa)
# no escaping of subcomponents # no escaping of subcomponents
co = '\n'.join([str(component) for component in co = '\n'.join([str(component) for component in
self.components]) self.components])
+1 -1
View File
@@ -11,7 +11,7 @@ HTTP statuses helpers
""" """
import re import re
from pydal._compat import iteritems from gluon._compat import iteritems
__all__ = ['HTTP', 'redirect'] __all__ = ['HTTP', 'redirect']
+1 -1
View File
@@ -21,7 +21,7 @@ from threading import RLock
from gluon.utf8 import Utf8 from gluon.utf8 import Utf8
from gluon.utils import local_html_escape from gluon.utils import local_html_escape
from pydal._compat import copyreg, PY2, maketrans, iterkeys, unicodeT, to_unicode, to_bytes, iteritems, to_native, pjoin from gluon._compat import copyreg, PY2, maketrans, iterkeys, unicodeT, to_unicode, to_bytes, iteritems, to_native, pjoin
from pydal.contrib.portalocker import read_locked, LockedFile from pydal.contrib.portalocker import read_locked, LockedFile
from gluon.fileutils import listdir from gluon.fileutils import listdir
+1 -1
View File
@@ -25,7 +25,7 @@ import socket
import random import random
import string import string
from pydal._compat import Cookie, urllib2 from gluon._compat import Cookie, urllib2
#from thread import allocate_lock #from thread import allocate_lock
from gluon.fileutils import abspath, write_file from gluon.fileutils import abspath, write_file
+1 -1
View File
@@ -10,7 +10,7 @@ Generates names for cache and session files
-------------------------------------------- --------------------------------------------
""" """
import os import os
from pydal._compat import builtin from gluon._compat import builtin
def generate(filename, depth=2, base=512): def generate(filename, depth=2, base=512):
if os.path.sep in filename: if os.path.sep in filename:
+1 -1
View File
@@ -10,7 +10,7 @@ Restricted environment to execute application's code
""" """
import sys import sys
from pydal._compat import pickle, ClassType from gluon._compat import pickle, ClassType
import traceback import traceback
import types import types
import os import os
+1 -1
View File
@@ -27,7 +27,7 @@ from gluon.storage import Storage, List
from gluon.http import HTTP from gluon.http import HTTP
from gluon.fileutils import abspath, read_file from gluon.fileutils import abspath, read_file
from gluon.settings import global_settings from gluon.settings import global_settings
from pydal._compat import urllib_unquote, urllib_quote, iteritems, xrange from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange
isdir = os.path.isdir isdir = os.path.isdir
isfile = os.path.isfile isfile = os.path.isfile
+1 -1
View File
@@ -11,7 +11,7 @@ import errno
import socket import socket
import logging import logging
import platform import platform
from pydal._compat import iteritems, to_bytes, StringIO, urllib_unquote from gluon._compat import iteritems, to_bytes, StringIO, urllib_unquote
# Define Constants # Define Constants
VERSION = '1.2.6' VERSION = '1.2.6'
+1 -1
View File
@@ -10,7 +10,7 @@ Cross-site scripting (XSS) defense
----------------------------------- -----------------------------------
""" """
from pydal._compat import HTMLParser, urlparse, entitydefs, basestring from gluon._compat import HTMLParser, urlparse, entitydefs, basestring
from cgi import escape from cgi import escape
from formatter import AbstractFormatter from formatter import AbstractFormatter
from xml.sax.saxutils import quoteattr from xml.sax.saxutils import quoteattr
+1 -1
View File
@@ -29,7 +29,7 @@ from json import loads, dumps
from gluon import DAL, Field, IS_NOT_EMPTY, IS_IN_SET, IS_NOT_IN_DB, IS_EMPTY_OR from gluon import DAL, Field, IS_NOT_EMPTY, IS_IN_SET, IS_NOT_IN_DB, IS_EMPTY_OR
from gluon import IS_INT_IN_RANGE, IS_DATETIME, IS_IN_DB from gluon import IS_INT_IN_RANGE, IS_DATETIME, IS_IN_DB
from gluon.utils import web2py_uuid from gluon.utils import web2py_uuid
from pydal._compat import Queue, long, iteritems from gluon._compat import Queue, long, iteritems
from gluon.storage import Storage from gluon.storage import Storage
USAGE = """ USAGE = """
+1 -1
View File
@@ -10,7 +10,7 @@ from gluon.html import TAG, XmlComponent, xmlescape
from gluon.languages import lazyT from gluon.languages import lazyT
import gluon.contrib.rss2 as rss2 import gluon.contrib.rss2 as rss2
import json as json_parser import json as json_parser
from pydal._compat import long, to_native, unicodeT from gluon._compat import long, to_native, unicodeT
have_yaml = True have_yaml = True
try: try:
+2 -2
View File
@@ -10,7 +10,7 @@ import os
import sys import sys
import platform import platform
from gluon.storage import Storage from gluon.storage import Storage
from pydal._compat import PY2 from gluon._compat import PY2
global_settings = Storage() global_settings = Storage()
settings = global_settings # legacy compatibility settings = global_settings # legacy compatibility
@@ -41,5 +41,5 @@ global_settings.is_jython = \
global_settings.is_source = os.path.exists(os.path.join( global_settings.is_source = os.path.exists(os.path.join(
global_settings.gluon_parent, 'web2py.py')) global_settings.gluon_parent, 'web2py.py'))
global_settings.is_py2 = PY2 global_settings.is_py2 = PY2
+1 -1
View File
@@ -30,7 +30,7 @@ from gluon.globals import Request, Response, Session
from gluon.storage import Storage, List from gluon.storage import Storage, List
from gluon.admin import w2p_unpack from gluon.admin import w2p_unpack
from pydal.base import BaseAdapter from pydal.base import BaseAdapter
from pydal._compat import iteritems, ClassType from gluon._compat import iteritems, ClassType
logger = logging.getLogger("web2py") logger = logging.getLogger("web2py")
+1 -1
View File
@@ -19,7 +19,7 @@ import urllib
import re import re
import os import os
from pydal._compat import StringIO, unichr, urllib_quote, iteritems, basestring, long, unicodeT, to_native from gluon._compat import StringIO, unichr, urllib_quote, iteritems, basestring, long, unicodeT, to_native
from gluon.http import HTTP, redirect from gluon.http import HTTP, redirect
from gluon.html import XmlComponent, truncate_string from gluon.html import XmlComponent, truncate_string
from gluon.html import XML, SPAN, TAG, A, DIV, CAT, UL, LI, TEXTAREA, BR, IMG from gluon.html import XML, SPAN, TAG, A, DIV, CAT, UL, LI, TEXTAREA, BR, IMG
+1 -1
View File
@@ -13,7 +13,7 @@ Provides:
""" """
from pydal.contrib import portalocker from pydal.contrib import portalocker
from pydal._compat import copyreg, pickle, PY2 from gluon._compat import copyreg, pickle, PY2
__all__ = ['List', 'Storage', 'Settings', 'Messages', __all__ = ['List', 'Storage', 'Settings', 'Messages',
'StorageList', 'load_storage', 'save_storage'] 'StorageList', 'load_storage', 'save_storage']
+1 -1
View File
@@ -17,7 +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 pydal._compat import PY2 from gluon._compat import PY2
regex_start_range = re.compile('\d+(?=\-)') regex_start_range = re.compile('\d+(?=\-)')
+1 -1
View File
@@ -18,7 +18,7 @@ import os
import cgi import cgi
import logging import logging
from re import compile, sub, escape, DOTALL from re import compile, sub, escape, DOTALL
from pydal._compat import StringIO, unicodeT, to_unicode, to_bytes, to_native from gluon._compat import StringIO, unicodeT, to_unicode, to_bytes, to_native
try: try:
# have web2py # have web2py
+1 -1
View File
@@ -11,7 +11,7 @@ from .fix_path import fix_sys_path
fix_sys_path(__file__) fix_sys_path(__file__)
from gluon.contenttype import contenttype from gluon.contenttype import contenttype
from pydal._compat import iteritems from gluon._compat import iteritems
class TestContentType(unittest.TestCase): class TestContentType(unittest.TestCase):
+1 -1
View File
@@ -8,7 +8,7 @@ import os
from .fix_path import fix_sys_path from .fix_path import fix_sys_path
fix_sys_path(__file__) fix_sys_path(__file__)
from pydal._compat import to_bytes from gluon._compat import to_bytes
from gluon.storage import Storage from gluon.storage import Storage
from gluon.contrib import fpdf as fpdf from gluon.contrib import fpdf as fpdf
from gluon.contrib import pyfpdf as pyfpdf from gluon.contrib import pyfpdf as pyfpdf
+1 -1
View File
@@ -34,7 +34,7 @@ class TestDALSubclass(unittest.TestCase):
db.close() db.close()
def testSerialization(self): def testSerialization(self):
from pydal._compat import pickle from gluon._compat import pickle
db = DAL(check_reserved=['all']) db = DAL(check_reserved=['all'])
db.define_table('t_a', Field('f_a')) db.define_table('t_a', Field('f_a'))
db.t_a.insert(f_a='test') db.t_a.insert(f_a='test')
+1 -1
View File
@@ -14,7 +14,7 @@ fix_sys_path(__file__)
from gluon.globals import Request, Response, Session from gluon.globals import Request, Response, Session
from gluon import URL from gluon import URL
from pydal._compat import basestring from gluon._compat import basestring
def setup_clean_session(): def setup_clean_session():
request = Request(env={}) request = Request(env={})
+2 -2
View File
@@ -17,7 +17,7 @@ from gluon.html import STYLE, TABLE, TR, TD, TAG, TBODY, THEAD, TEXTAREA, TFOOT,
from gluon.storage import Storage from gluon.storage import Storage
from gluon.html import XML_pickle, XML_unpickle from gluon.html import XML_pickle, XML_unpickle
from gluon.html import TAG_pickler, TAG_unpickler from gluon.html import TAG_pickler, TAG_unpickler
from pydal._compat import xrange, PY2, to_native from gluon._compat import xrange, PY2, to_native
class TestBareHelpers(unittest.TestCase): class TestBareHelpers(unittest.TestCase):
@@ -676,7 +676,7 @@ class TestBareHelpers(unittest.TestCase):
# TODO: def test_markdown_serializer(self): # TODO: def test_markdown_serializer(self):
# TODO: def test_markmin_serializer(self): # TODO: def test_markmin_serializer(self):
@unittest.skipIf(not PY2, "Skipping Python 3.x tests for MARKMIN") @unittest.skipIf(not PY2, "Skipping Python 3.x tests for MARKMIN")
def test_MARKMIN(self): def test_MARKMIN(self):
# This test pass with python 2.7 but expected to fail under 2.6 # This test pass with python 2.7 but expected to fail under 2.6
+1 -1
View File
@@ -15,7 +15,7 @@ from .fix_path import fix_sys_path
fix_sys_path(__file__) fix_sys_path(__file__)
from gluon import languages from gluon import languages
from pydal._compat import PY2 from gluon._compat import PY2
MP_WORKING = 0 MP_WORKING = 0
try: try:
+1 -1
View File
@@ -21,7 +21,7 @@ from gluon.fileutils import abspath
from gluon.settings import global_settings from gluon.settings import global_settings
from gluon.http import HTTP from gluon.http import HTTP
from gluon.storage import Storage from gluon.storage import Storage
from pydal._compat import to_bytes, to_native, PY2 from gluon._compat import to_bytes, to_native, PY2
logger = None logger = None
oldcwd = None oldcwd = None
+1 -1
View File
@@ -21,7 +21,7 @@ from gluon.fileutils import abspath
from gluon.settings import global_settings from gluon.settings import global_settings
from gluon.http import HTTP from gluon.http import HTTP
from gluon.storage import Storage from gluon.storage import Storage
from pydal._compat import to_bytes from gluon._compat import to_bytes
logger = None logger = None
oldcwd = None oldcwd = None
+1 -1
View File
@@ -10,7 +10,7 @@ fix_sys_path(__file__)
from gluon.storage import Storage, StorageList, List from gluon.storage import Storage, StorageList, List
from gluon.http import HTTP from gluon.http import HTTP
from pydal._compat import pickle from gluon._compat import pickle
class TestStorage(unittest.TestCase): class TestStorage(unittest.TestCase):
+1 -1
View File
@@ -66,7 +66,7 @@ class TestTemplate(unittest.TestCase):
def testWithDummyFileSystem(self): def testWithDummyFileSystem(self):
from os.path import join as pjoin from os.path import join as pjoin
import contextlib import contextlib
from pydal._compat import StringIO from gluon._compat import StringIO
from gluon.restricted import RestrictedError from gluon.restricted import RestrictedError
@contextlib.contextmanager @contextlib.contextmanager
+1 -1
View File
@@ -22,7 +22,7 @@ from gluon.dal import DAL, Field
from pydal.objects import Table from pydal.objects import Table
from gluon import tools from gluon import tools
from gluon.tools import Auth, Mail, Recaptcha, Recaptcha2, prettydate, Expose from gluon.tools import Auth, Mail, Recaptcha, Recaptcha2, prettydate, Expose
from pydal._compat import PY2 from gluon._compat import PY2
from gluon.globals import Request, Response, Session from gluon.globals import Request, Response, Session
from gluon.storage import Storage from gluon.storage import Storage
from gluon.languages import translator from gluon.languages import translator
+1 -1
View File
@@ -13,7 +13,7 @@ fix_sys_path(__file__)
from gluon.validators import * from gluon.validators import *
from pydal._compat import PY2, to_bytes from gluon._compat import PY2, to_bytes
class TestValidators(unittest.TestCase): class TestValidators(unittest.TestCase):
+1 -1
View File
@@ -16,7 +16,7 @@ from .fix_path import fix_sys_path
fix_sys_path(__file__) fix_sys_path(__file__)
from gluon.contrib.webclient import WebClient from gluon.contrib.webclient import WebClient
from pydal._compat import urllib2, PY2 from gluon._compat import urllib2, PY2
webserverprocess = None webserverprocess = None
+6 -6
View File
@@ -12,7 +12,7 @@ Auth, Mail, PluginManager and various utilities
import base64 import base64
from functools import reduce from functools import reduce
from pydal._compat import pickle, thread, urllib2, Cookie, StringIO, configparser, MIMEBase, MIMEMultipart, \ from gluon._compat import pickle, thread, urllib2, Cookie, StringIO, configparser, MIMEBase, MIMEMultipart, \
MIMEText, Encoders, Charset, long, urllib_quote, iteritems, to_bytes, to_native, add_charset, \ MIMEText, Encoders, Charset, long, urllib_quote, iteritems, to_bytes, to_native, add_charset, \
charset_QP, basestring, unicodeT, to_unicode charset_QP, basestring, unicodeT, to_unicode
import datetime import datetime
@@ -1193,7 +1193,7 @@ class AuthJWT(object):
return '%s$%s' % (request.now, auth.user_id) return '%s$%s' % (request.now, auth.user_id)
return "No auth info!" return "No auth info!"
""" """
@@ -1246,7 +1246,7 @@ class AuthJWT(object):
self.before_authorization = before_authorization self.before_authorization = before_authorization
self.max_header_length = max_header_length self.max_header_length = max_header_length
self.recvd_token = None self.recvd_token = None
@staticmethod @staticmethod
def jwt_b64e(string): def jwt_b64e(string):
string = to_bytes(string) string = to_bytes(string)
@@ -1362,7 +1362,7 @@ class AuthJWT(object):
""" """
The part that issues (and refreshes) tokens. The part that issues (and refreshes) tokens.
Used in a controller, given myjwt is the istantiated class, as Used in a controller, given myjwt is the istantiated class, as
@myjwt.allow_jwt(required=False, verify_expiration=False) @myjwt.allow_jwt(required=False, verify_expiration=False)
def api_auth(): def api_auth():
return myjwt.jwt_token_manager() return myjwt.jwt_token_manager()
@@ -1440,7 +1440,7 @@ class AuthJWT(object):
self.recvd_token = token self.recvd_token = token
return token return token
def allows_jwt(self, otherwise=None, required=True, verify_expiration=True, token_param='_token'): def allows_jwt(self, otherwise=None, required=True, verify_expiration=True, token_param='_token'):
""" """
The decorator that takes care of injecting auth info in the decorated action. The decorator that takes care of injecting auth info in the decorated action.
@@ -1832,7 +1832,7 @@ class Auth(object):
# ## what happens after registration? # ## what happens after registration?
settings = self.settings = Settings() settings = self.settings = Settings()
settings.update(Auth.default_settings) settings.update(Auth.default_settings)
host = self.select_host(request.env.http_host, host_names) host = self.select_host(request.env.http_host, host_names)
settings.update( settings.update(
cas_domains=[host], cas_domains=[host],
+1 -1
View File
@@ -11,7 +11,7 @@ Utilities and class for UTF8 strings managing
---------------------------------------------- ----------------------------------------------
""" """
from __future__ import print_function from __future__ import print_function
from pydal._compat import builtin as __builtin__, unicodeT, iteritems, to_unicode, to_native from gluon._compat import builtin as __builtin__, unicodeT, iteritems, to_unicode, to_native
__all__ = ['Utf8'] __all__ = ['Utf8']
+2 -2
View File
@@ -23,7 +23,7 @@ import logging
import socket import socket
import base64 import base64
import zlib import zlib
from pydal._compat import basestring, pickle, PY2, xrange, to_bytes, to_native from gluon._compat import basestring, pickle, PY2, xrange, to_bytes, to_native
_struct_2_long_long = struct.Struct('=QQ') _struct_2_long_long = struct.Struct('=QQ')
@@ -370,7 +370,7 @@ def local_html_escape(data, quote=False):
translated. translated.
""" """
if PY2: if PY2:
import cgi import cgi
data = cgi.escape(data, quote) data = cgi.escape(data, quote)
return data.replace("'", "'") if quote else data return data.replace("'", "'") if quote else data
else: else:
+1 -1
View File
@@ -21,7 +21,7 @@ import urllib
import struct import struct
import decimal import decimal
import unicodedata import unicodedata
from pydal._compat import StringIO, long, unicodeT, to_unicode, urllib_unquote, unichr, to_bytes, PY2, to_unicode, to_native from gluon._compat import StringIO, long, unicodeT, to_unicode, urllib_unquote, unichr, to_bytes, PY2, to_unicode, to_native
from gluon.utils import simple_hash, web2py_uuid, DIGEST_ALG_BY_SIZE from gluon.utils import simple_hash, web2py_uuid, DIGEST_ALG_BY_SIZE
from pydal.objects import Field, FieldVirtual, FieldMethod from pydal.objects import Field, FieldVirtual, FieldMethod
from functools import reduce from functools import reduce
+2 -2
View File
@@ -13,7 +13,7 @@ from __future__ import print_function
import datetime import datetime
import sys import sys
from pydal._compat import StringIO, thread, xrange from gluon._compat import StringIO, thread, xrange
import time import time
import threading import threading
import os import os
@@ -935,7 +935,7 @@ def console():
sys.argv, other_args = sys.argv[:k], sys.argv[k + 1:] sys.argv, other_args = sys.argv[:k], sys.argv[k + 1:]
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
options.args = [options.run] + other_args options.args = [options.run] + other_args
copy_options = copy.deepcopy(options) copy_options = copy.deepcopy(options)
copy_options.password = '******' copy_options.password = '******'
global_settings.cmd_options = copy_options global_settings.cmd_options = copy_options