From c7d91108bb3c9fd3c9fbeb269ef19e5245792580 Mon Sep 17 00:00:00 2001 From: mrdumpty Date: Thu, 7 Dec 2017 17:10:05 +0400 Subject: [PATCH 1/9] Update db.py Possible typo? --- applications/welcome/models/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/welcome/models/db.py b/applications/welcome/models/db.py index 5504a95e..233d3563 100644 --- a/applications/welcome/models/db.py +++ b/applications/welcome/models/db.py @@ -130,7 +130,7 @@ response.google_analytics_id = configuration.get('google.analytics_id') # ------------------------------------------------------------------------- if configuration.get('scheduler.enabled'): from gluon.scheduler import Scheduler - scheduler = Scheduler(db, heartbeat=configure.get('heartbeat')) + scheduler = Scheduler(db, heartbeat=configuration.get('heartbeat')) # ------------------------------------------------------------------------- # Define your tables below (or better in another model file) for example From 4ecdc2bc738282e4aff7f2c92fa5766413c84fd2 Mon Sep 17 00:00:00 2001 From: Sergei K Date: Mon, 11 Dec 2017 19:59:28 +0500 Subject: [PATCH 2/9] Update setup.py --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index cdcf118a..499cf4c2 100644 --- a/setup.py +++ b/setup.py @@ -65,6 +65,9 @@ def start(): 'gluon/contrib/pysimplesoap', 'gluon/contrib/pg8000', 'gluon/contrib/plural_rules', + 'gluon/contrib/minify', + 'gluon/contrib/pyaes', + 'gluon/contrib/pyuca', 'gluon/tests', ], package_data={'gluon': ['env.tar']}, From dca4639b8521026d995e2e0add87c86c4ee4a793 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 12 Dec 2017 19:23:19 +0100 Subject: [PATCH 3/9] fix urllib quote_plus, close #1822 --- gluon/_compat.py | 4 ++-- gluon/rewrite.py | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/gluon/_compat.py b/gluon/_compat.py index f7562b12..a814ed9f 100644 --- a/gluon/_compat.py +++ b/gluon/_compat.py @@ -26,7 +26,7 @@ if PY2: 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 urllib import quote as urllib_quote, unquote as urllib_unquote, quote_plus as urllib_quote_plus from string import maketrans from types import ClassType import cgi @@ -94,7 +94,7 @@ else: 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 urllib.parse import quote as urllib_quote, unquote as urllib_unquote, urlencode, quote_plus as urllib_quote_plus from http import cookiejar as cookielib from xmlrpc.client import ProtocolError import html # warning, this is the python3 module and not the web2py html module diff --git a/gluon/rewrite.py b/gluon/rewrite.py index fa4ac972..31e1bd16 100644 --- a/gluon/rewrite.py +++ b/gluon/rewrite.py @@ -22,12 +22,11 @@ import re import logging import traceback import threading -import urllib from gluon.storage import Storage, List from gluon.http import HTTP from gluon.fileutils import abspath, read_file from gluon.settings import global_settings -from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange +from gluon._compat import urllib_unquote, urllib_quote, iteritems, xrange, urllib_quote_plus isdir = os.path.isdir isfile = os.path.isfile @@ -235,7 +234,7 @@ def try_rewrite_on_error(http_response, request, environ, ticket=None): path_info, query_string = uri, '' query_string += \ 'code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ - (status, ticket, urllib.quote_plus( + (status, ticket, urllib_quote_plus( request.env.request_uri), request.url) if uri.startswith('http://') or uri.startswith('https://'): # make up a response @@ -270,12 +269,12 @@ def try_redirect_on_error(http_object, request, ticket=None): elif '?' in redir: url = '%s&code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ (redir, status, ticket, - urllib.quote_plus(request.env.request_uri), + urllib_quote_plus(request.env.request_uri), request.url) else: url = '%s?code=%s&ticket=%s&requested_uri=%s&request_url=%s' % \ (redir, status, ticket, - urllib.quote_plus(request.env.request_uri), + urllib_quote_plus(request.env.request_uri), request.url) return HTTP(303, 'You are being redirected here' % url, Location=url) return http_object From cfdda257eded66c8c6da49669294cbaba32fb0ca Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 12 Dec 2017 19:24:04 +0100 Subject: [PATCH 4/9] testing py36 on windows --- appveyor.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index dde913d4..7e5a39c7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,6 +10,10 @@ environment: COVERAGE_PROCESS_START: gluon/tests/coverage.ini PYTHON_ARCH: "64" + - PYTHON: "C:/Python36" + COVERAGE_PROCESS_START: gluon/tests/coverage.ini + PYTHON_ARCH: "64" + clone_depth: 50 init: From f048e45494e48afb5ded772316f4532ed5807a46 Mon Sep 17 00:00:00 2001 From: ilvalle Date: Tue, 12 Dec 2017 20:38:56 +0100 Subject: [PATCH 5/9] removed pycrypto dep --- appveyor.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 7e5a39c7..018e80eb 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -24,7 +24,6 @@ install: - python -m ensurepip - pip install codecov - git submodule update --init --recursive - - pip install pycrypto # Check that we have the expected version and architecture for Python - "python --version" - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" From 35a1f6f342ce7e9cbf9348d61792e7801aca1cf1 Mon Sep 17 00:00:00 2001 From: Roald Osinga Date: Wed, 13 Dec 2017 11:10:08 +0100 Subject: [PATCH 6/9] made sorting of translation keys py3 safe --- applications/admin/controllers/default.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/applications/admin/controllers/default.py b/applications/admin/controllers/default.py index ff4ac4a2..28198d2a 100644 --- a/applications/admin/controllers/default.py +++ b/applications/admin/controllers/default.py @@ -963,8 +963,7 @@ def edit_language(): form = SPAN(strings['__corrupted__'], _class='error') return dict(filename=filename, form=form) - keys = sorted(strings.keys(), lambda x, y: cmp( - unicode(x, 'utf-8').lower(), unicode(y, 'utf-8').lower())) + keys = sorted(strings.keys(), key=lambda x: to_native(x).lower()) rows = [] rows.append(H2(T('Original/Translation'))) From 9bf8ca9c3b756accbaf6d0f88eb78e891c1028fb Mon Sep 17 00:00:00 2001 From: Roald Osinga Date: Fri, 5 Jan 2018 11:49:20 +0100 Subject: [PATCH 7/9] made cas_provider response py3 compatible --- gluon/tools.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gluon/tools.py b/gluon/tools.py index f57e8dd7..716dafcd 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -2498,9 +2498,9 @@ class Auth(AuthAPI): success = True def build_response(body): - return '\n' +\ - TAG['cas:serviceResponse']( - body, **{'_xmlns:cas': 'http://www.yale.edu/tp/cas'}).xml() + xml_body = to_native(TAG['cas:serviceResponse']( + body, **{'_xmlns:cas': 'http://www.yale.edu/tp/cas'}).xml()) + return '\n' + xml_body if success: if version == 1: message = 'yes\n%s' % user[userfield] From 6994cee6c98300e00b707e92fd696b89efb90a0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Cesar=20Caballero=20D=C3=ADaz?= Date: Fri, 5 Jan 2018 10:32:46 -0500 Subject: [PATCH 8/9] Fixed wellcome app date and datetime widget #1831 --- applications/welcome/languages/es.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/welcome/languages/es.py b/applications/welcome/languages/es.py index 490bf470..7865c42d 100755 --- a/applications/welcome/languages/es.py +++ b/applications/welcome/languages/es.py @@ -8,8 +8,8 @@ '%s %%{row} deleted': '%s %%{fila} %%{eliminada}', '%s %%{row} updated': '%s %%{fila} %%{actualizada}', '%s selected': '%s %%{seleccionado}', -'%Y-%m-%d': '%d/%m/%A', -'%Y-%m-%d %H:%M:%S': '%d/%m/%A %H:%M:%S', +'%Y-%m-%d': '%d/%m/%Y', +'%Y-%m-%d %H:%M:%S': '%d/%m/%Y %H:%M:%S', '(**%.0d MB**)': '(**%.0d MB**)', '(something like "it-it")': '(algo como "it-it")', '**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}': '**%(items)s** %%{item(items)}, **%(bytes)s** %%{byte(bytes)}', From b7b16da08fe93446ef40b8bae2d175a2c4d1dc1c Mon Sep 17 00:00:00 2001 From: ilvalle Date: Sun, 7 Jan 2018 18:53:33 +0100 Subject: [PATCH 9/9] Added the web2py_disable_garbage_collect option to avoid garbage collect --- gluon/main.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gluon/main.py b/gluon/main.py index 43b2189f..d37893a9 100644 --- a/gluon/main.py +++ b/gluon/main.py @@ -183,12 +183,13 @@ def serve_controller(request, response, session): response._view_environment.update(page) page = run_view_in(response._view_environment) - # logic to garbage collect after exec, not always, once every 100 requests - global requests - requests = ('requests' in globals()) and (requests + 1) % 100 or 0 - if not requests: - gc.collect() - # end garbage collection logic + if not request.env.web2py_disable_garbage_collect: + # logic to garbage collect after exec, not always, once every 100 requests + global requests + requests = ('requests' in globals()) and (requests + 1) % 100 or 0 + if not requests: + gc.collect() + # end garbage collection logic # ################################################## # set default headers it not set