From dcce7fc39a0a8618a32c8467d7eedc1230552c2e Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 25 Aug 2012 11:29:11 -0500 Subject: [PATCH] fixed @//// in wiki and pep8 spacing --- VERSION | 2 +- __init__.py | 2 ++ anyserver.py | 1 + appengine_config.py | 1 + cgihandler.py | 1 + fcgihandler.py | 1 + gaehandler.py | 1 + gluon/__init__.py | 1 + gluon/admin.py | 1 + gluon/cache.py | 1 + gluon/cfs.py | 1 + gluon/compileapp.py | 1 + gluon/contenttype.py | 1 + gluon/contrib/AuthorizeNet.py | 1 + gluon/contrib/DowCommerce.py | 1 + gluon/contrib/__init__.py | 1 + gluon/contrib/aes.py | 1 + gluon/contrib/autolinks.py | 5 +-- gluon/contrib/comet_messaging.py | 1 + gluon/contrib/feedparser.py | 1 + gluon/contrib/gae_memcache.py | 1 + gluon/contrib/gae_retry.py | 1 + gluon/contrib/generics.py | 1 + gluon/contrib/google_wallet.py | 1 + gluon/contrib/gql.py | 1 + gluon/contrib/imageutils.py | 1 + gluon/contrib/login_methods/__init__.py | 1 + gluon/contrib/login_methods/basic_auth.py | 1 + .../login_methods/browserid_account.py | 19 ++++++----- gluon/contrib/login_methods/cas_auth.py | 1 + .../contrib/login_methods/dropbox_account.py | 11 ++++--- gluon/contrib/login_methods/email_auth.py | 1 + .../login_methods/extended_login_form.py | 3 +- .../login_methods/gae_google_account.py | 1 + gluon/contrib/login_methods/ldap_auth.py | 1 + .../contrib/login_methods/linkedin_account.py | 1 + gluon/contrib/login_methods/loginza.py | 1 + gluon/contrib/login_methods/motp_auth.py | 33 ++++++++++--------- .../contrib/login_methods/oauth10a_account.py | 1 + .../contrib/login_methods/oauth20_account.py | 11 ++++--- gluon/contrib/login_methods/openid_auth.py | 1 + gluon/contrib/login_methods/pam_auth.py | 1 + gluon/contrib/login_methods/rpx_account.py | 5 +-- gluon/contrib/login_methods/x509_auth.py | 5 +-- gluon/contrib/markmin/markmin2html.py | 2 +- gluon/contrib/memdb.py | 1 + gluon/contrib/pam.py | 1 + gluon/contrib/pbkdf2.py | 1 + gluon/contrib/populate.py | 1 + gluon/contrib/pyfpdf.py | 1 + gluon/contrib/qdb.py | 1 + gluon/contrib/redis_cache.py | 1 + gluon/contrib/rss2.py | 1 + gluon/contrib/shell.py | 1 + gluon/contrib/simplejsonrpc.py | 1 + gluon/contrib/sms_utils.py | 1 + gluon/contrib/spreadsheet.py | 1 + gluon/contrib/stripe.py | 1 + gluon/contrib/taskbar_widget.py | 1 + gluon/contrib/timecollect.py | 1 + gluon/contrib/user_agent_parser.py | 1 + gluon/custom_import.py | 1 + gluon/dal.py | 13 ++++---- gluon/debug.py | 1 + gluon/decoder.py | 1 + gluon/fileutils.py | 1 + gluon/globals.py | 3 +- gluon/highlight.py | 1 + gluon/html.py | 3 +- gluon/http.py | 1 + gluon/import_all.py | 1 + gluon/languages.py | 1 + gluon/main.py | 1 + gluon/messageboxhandler.py | 1 + gluon/myregex.py | 1 + gluon/newcron.py | 1 + gluon/portalocker.py | 1 + gluon/reserved_sql_keywords.py | 1 + gluon/restricted.py | 1 + gluon/rewrite.py | 3 +- gluon/rocket.py | 1 + gluon/sanitizer.py | 1 + gluon/scheduler.py | 1 + gluon/serializers.py | 1 + gluon/settings.py | 1 + gluon/shell.py | 1 + gluon/sql.py | 1 + gluon/sqlhtml.py | 3 +- gluon/storage.py | 5 +-- gluon/streamer.py | 1 + gluon/template.py | 5 +-- gluon/tools.py | 23 ++++++------- gluon/utf8.py | 1 + gluon/utils.py | 1 + gluon/validators.py | 1 + gluon/widget.py | 7 ++-- gluon/winservice.py | 1 + gluon/xmlrpc.py | 1 + isapiwsgihandler.py | 1 + modpythonhandler.py | 1 + options_std.py | 1 + router.example.py | 1 + routes.example.py | 1 + scgihandler.py | 1 + setup.py | 1 + setup_app.py | 1 + setup_exe.py | 1 + setup_exe_2.6.py | 1 + web2py.py | 1 + wsgihandler.py | 1 + 110 files changed, 181 insertions(+), 72 deletions(-) diff --git a/VERSION b/VERSION index 767e083c..296d274f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-25 11:25:55) dev +Version 2.00.0 (2012-08-25 11:29:08) dev diff --git a/__init__.py b/__init__.py index 12a6f48e..584ba879 100644 --- a/__init__.py +++ b/__init__.py @@ -6,3 +6,5 @@ + + diff --git a/anyserver.py b/anyserver.py index 3d6c929c..53985442 100644 --- a/anyserver.py +++ b/anyserver.py @@ -309,3 +309,4 @@ if __name__=='__main__': + diff --git a/appengine_config.py b/appengine_config.py index 33916e4d..4bb11668 100644 --- a/appengine_config.py +++ b/appengine_config.py @@ -6,3 +6,4 @@ def webapp_add_wsgi_middleware(app): + diff --git a/cgihandler.py b/cgihandler.py index 16620054..c4c14993 100755 --- a/cgihandler.py +++ b/cgihandler.py @@ -65,3 +65,4 @@ wsgiref.handlers.CGIHandler().run(gluon.main.wsgibase) + diff --git a/fcgihandler.py b/fcgihandler.py index 196e538f..f45067a6 100755 --- a/fcgihandler.py +++ b/fcgihandler.py @@ -55,3 +55,4 @@ fcgi.WSGIServer(application, bindAddress='/tmp/fcgi.sock').run() + diff --git a/gaehandler.py b/gaehandler.py index 0d09987b..7557a982 100755 --- a/gaehandler.py +++ b/gaehandler.py @@ -103,3 +103,4 @@ if __name__ == '__main__': + diff --git a/gluon/__init__.py b/gluon/__init__.py index 2f48d365..fd88cd43 100644 --- a/gluon/__init__.py +++ b/gluon/__init__.py @@ -52,3 +52,4 @@ if 0: + diff --git a/gluon/admin.py b/gluon/admin.py index d84ece9e..bb3bcf92 100644 --- a/gluon/admin.py +++ b/gluon/admin.py @@ -480,3 +480,4 @@ def create_missing_app_folders(request): + diff --git a/gluon/cache.py b/gluon/cache.py index cbe2b215..bc9cc0f9 100644 --- a/gluon/cache.py +++ b/gluon/cache.py @@ -498,3 +498,4 @@ def lazy_cache(key=None,time_expire=None,cache_model='ram'): return decorator + diff --git a/gluon/cfs.py b/gluon/cfs.py index d643882b..b3669f4b 100644 --- a/gluon/cfs.py +++ b/gluon/cfs.py @@ -56,3 +56,4 @@ def getcfs(key, filename, filter=None): + diff --git a/gluon/compileapp.py b/gluon/compileapp.py index 378e8441..a6bb23f8 100644 --- a/gluon/compileapp.py +++ b/gluon/compileapp.py @@ -691,3 +691,4 @@ if __name__ == '__main__': + diff --git a/gluon/contenttype.py b/gluon/contenttype.py index 6e4c78b6..cb11c687 100644 --- a/gluon/contenttype.py +++ b/gluon/contenttype.py @@ -723,3 +723,4 @@ def contenttype(filename, default='text/plain'): + diff --git a/gluon/contrib/AuthorizeNet.py b/gluon/contrib/AuthorizeNet.py index aa6bf785..8b24ef0a 100755 --- a/gluon/contrib/AuthorizeNet.py +++ b/gluon/contrib/AuthorizeNet.py @@ -263,3 +263,4 @@ if __name__=='__main__': + diff --git a/gluon/contrib/DowCommerce.py b/gluon/contrib/DowCommerce.py index 090fd077..d71c3911 100644 --- a/gluon/contrib/DowCommerce.py +++ b/gluon/contrib/DowCommerce.py @@ -243,3 +243,4 @@ if __name__=='__main__': + diff --git a/gluon/contrib/__init__.py b/gluon/contrib/__init__.py index 9e5f5f8a..12a6f48e 100644 --- a/gluon/contrib/__init__.py +++ b/gluon/contrib/__init__.py @@ -5,3 +5,4 @@ + diff --git a/gluon/contrib/aes.py b/gluon/contrib/aes.py index bb745310..cfc212b5 100644 --- a/gluon/contrib/aes.py +++ b/gluon/contrib/aes.py @@ -501,3 +501,4 @@ aes_Rcon = array('B', '61c29f254a943366cc831d3a74e8cb'.decode('hex') ) + diff --git a/gluon/contrib/autolinks.py b/gluon/contrib/autolinks.py index cb05079a..be72db03 100644 --- a/gluon/contrib/autolinks.py +++ b/gluon/contrib/autolinks.py @@ -135,7 +135,7 @@ def oembed(url): for k,v in EMBED_MAPS: if k.match(url): oembed = v+'?format=json&url='+cgi.escape(url) - try: + try: data = urllib.urlopen(oembed).read() print data return loads(data) # json! @@ -152,7 +152,7 @@ def expand_one(url,cdict): r = cdict[url] else: r = oembed(url) - if isinstance(cdict,dict): + if isinstance(cdict,dict): cdict[url] = r # if oembed service if 'html' in r: @@ -204,3 +204,4 @@ if __name__=="__main__": else: print test() + diff --git a/gluon/contrib/comet_messaging.py b/gluon/contrib/comet_messaging.py index d41afb51..c3f2ed35 100644 --- a/gluon/contrib/comet_messaging.py +++ b/gluon/contrib/comet_messaging.py @@ -194,3 +194,4 @@ if __name__ == "__main__": + diff --git a/gluon/contrib/feedparser.py b/gluon/contrib/feedparser.py index 371323e9..1afb2c11 100755 --- a/gluon/contrib/feedparser.py +++ b/gluon/contrib/feedparser.py @@ -3910,3 +3910,4 @@ def parse(url_file_stream_or_string, etag=None, modified=None, agent=None, refer + diff --git a/gluon/contrib/gae_memcache.py b/gluon/contrib/gae_memcache.py index e03e74fe..99c4f3cf 100644 --- a/gluon/contrib/gae_memcache.py +++ b/gluon/contrib/gae_memcache.py @@ -55,3 +55,4 @@ class MemcacheClient(Client): + diff --git a/gluon/contrib/gae_retry.py b/gluon/contrib/gae_retry.py index a3f671f2..134112a4 100644 --- a/gluon/contrib/gae_retry.py +++ b/gluon/contrib/gae_retry.py @@ -90,3 +90,4 @@ def autoretry_datastore_timeouts(attempts=5.0, interval=0.1, exponent=2.0): + diff --git a/gluon/contrib/generics.py b/gluon/contrib/generics.py index d50137c0..0c9c2a23 100644 --- a/gluon/contrib/generics.py +++ b/gluon/contrib/generics.py @@ -67,3 +67,4 @@ def pdf_from_html(html): + diff --git a/gluon/contrib/google_wallet.py b/gluon/contrib/google_wallet.py index 84d39171..9ea64ea6 100644 --- a/gluon/contrib/google_wallet.py +++ b/gluon/contrib/google_wallet.py @@ -19,3 +19,4 @@ def button(merchant_id="123456789012345", + diff --git a/gluon/contrib/gql.py b/gluon/contrib/gql.py index 94465a7d..92b637e9 100644 --- a/gluon/contrib/gql.py +++ b/gluon/contrib/gql.py @@ -9,3 +9,4 @@ from gluon.dal import DAL, Field, Table, Query, Set, Expression, Row, Rows, driv + diff --git a/gluon/contrib/imageutils.py b/gluon/contrib/imageutils.py index 1c5041ff..e8094458 100644 --- a/gluon/contrib/imageutils.py +++ b/gluon/contrib/imageutils.py @@ -58,3 +58,4 @@ def THUMB(image, nx=120, ny=120, gae=False, name='thumb'): else: return image + diff --git a/gluon/contrib/login_methods/__init__.py b/gluon/contrib/login_methods/__init__.py index 139597f9..b28b04f6 100644 --- a/gluon/contrib/login_methods/__init__.py +++ b/gluon/contrib/login_methods/__init__.py @@ -1,2 +1,3 @@ + diff --git a/gluon/contrib/login_methods/basic_auth.py b/gluon/contrib/login_methods/basic_auth.py index 78b461cb..fee1c35b 100644 --- a/gluon/contrib/login_methods/basic_auth.py +++ b/gluon/contrib/login_methods/basic_auth.py @@ -23,3 +23,4 @@ def basic_auth(server="http://127.0.0.1"): return False return basic_login_aux + diff --git a/gluon/contrib/login_methods/browserid_account.py b/gluon/contrib/login_methods/browserid_account.py index 8d74af30..83375c8e 100644 --- a/gluon/contrib/login_methods/browserid_account.py +++ b/gluon/contrib/login_methods/browserid_account.py @@ -6,18 +6,18 @@ developed by Madhukar R Pai (Copyright 2012) Email License : LGPL - + thanks and credits to the web2py community - + This custom authenticator allows web2py to authenticate using browserid (https://browserid.org/) BrowserID is a project by Mozilla Labs (http://mozillalabs.com/) to Know how browserid works please visit http://identity.mozilla.com/post/7616727542/introducing-browserid-a-better-way-to-sign-in - + bottom line BrowserID provides a free, secure, de-centralized, easy to use(for users and developers) login solution. You can use any email id as your login id. Browserid just verifys the email id and lets you login with that id. - + credits for the doPost jquery function - itsadok (http://stackoverflow.com/users/7581/itsadok) - + """ import time from gluon import * @@ -32,7 +32,7 @@ class BrowserID(object): audience = "http://127.0.0.1:8000" assertion_post_url = "http://127.0.0.1:8000/%s/default/user/login" % request.application) """ - + def __init__(self, request, audience = "", @@ -45,7 +45,7 @@ class BrowserID(object): crypto_js = "https://crypto-js.googlecode.com/files/2.2.0-crypto-md5.js", on_login_failure = None, ): - + self.request = request self.audience = audience self.assertion_post_url = assertion_post_url @@ -64,13 +64,13 @@ class BrowserID(object): def get_user(self): request = self.request - if request.vars.assertion: + if request.vars.assertion: audience = self.audience issuer = self.issuer assertion = XML(request.vars.assertion,sanitize=True) verify_data = {'assertion':assertion,'audience':audience} auth_info_json = fetch(self.verify_url,data=verify_data) - j = json.loads(auth_info_json) + j = json.loads(auth_info_json) epoch_time = int(time.time()*1000) # we need 13 digit epoch time if j["status"] == "okay" and j["audience"] == audience and j['issuer'] == issuer and j['expires'] >= epoch_time: return dict(email = j['email']) @@ -88,3 +88,4 @@ class BrowserID(object): A(IMG(_src=self.browserid_button,_alt=self.prompt),_href="#",_onclick=onclick,_class="browserid",_title="Login With BrowserID"), SCRIPT(self.asertion_js)) return form + diff --git a/gluon/contrib/login_methods/cas_auth.py b/gluon/contrib/login_methods/cas_auth.py index d53f3608..0c922a56 100644 --- a/gluon/contrib/login_methods/cas_auth.py +++ b/gluon/contrib/login_methods/cas_auth.py @@ -136,3 +136,4 @@ class CasAuth( object ): import urllib redirect("%s?service=%s" % (self.cas_logout_url,self.cas_my_url)) + diff --git a/gluon/contrib/login_methods/dropbox_account.py b/gluon/contrib/login_methods/dropbox_account.py index 54b71c46..bfd94723 100644 --- a/gluon/contrib/login_methods/dropbox_account.py +++ b/gluon/contrib/login_methods/dropbox_account.py @@ -12,7 +12,7 @@ import os import re import urllib -from dropbox import client, rest, session +from dropbox import client, rest, session from gluon import * from gluon.tools import fetch from gluon.storage import Storage @@ -50,15 +50,15 @@ class DropboxAccount(object): self.sess = session.DropboxSession( self.key,self.secret,self.access_type) - + def get_user(self): request = self.request token = current.session.dropbox_token try: - access_token = self.sess.obtain_access_token(token) + access_token = self.sess.obtain_access_token(token) except: access_token = None - if access_token: + if access_token: user = Storage() self.client = client.DropboxClient(self.sess) data = self.client.account_info() @@ -68,7 +68,7 @@ class DropboxAccount(object): last_name = display_name[-1], registration_id = data.get('uid',None)) if not user['registration_id'] and self.on_login_failure: - redirect(self.on_login_failure) + redirect(self.on_login_failure) return user return None @@ -107,3 +107,4 @@ def use_dropbox(auth,filename='private/dropbox.key',**kwargs): auth.settings.login_form = DropboxAccount( request,key=key,secret=secret,access_type=access_type, login_url = login_url,**kwargs) + diff --git a/gluon/contrib/login_methods/email_auth.py b/gluon/contrib/login_methods/email_auth.py index 5cba3108..a53011a2 100644 --- a/gluon/contrib/login_methods/email_auth.py +++ b/gluon/contrib/login_methods/email_auth.py @@ -43,3 +43,4 @@ def email_auth(server="smtp.gmail.com:587", pass return False return email_auth_aux + diff --git a/gluon/contrib/login_methods/extended_login_form.py b/gluon/contrib/login_methods/extended_login_form.py index 26e105b1..059d4816 100644 --- a/gluon/contrib/login_methods/extended_login_form.py +++ b/gluon/contrib/login_methods/extended_login_form.py @@ -86,7 +86,7 @@ class ExtendedLoginForm(object): Otherwise it will render the normal login form combined with alt_login_form.login_form. """ - + request = current.request args = request.args @@ -102,3 +102,4 @@ class ExtendedLoginForm(object): form.components.append(self.alt_login_form.login_form()) return form + diff --git a/gluon/contrib/login_methods/gae_google_account.py b/gluon/contrib/login_methods/gae_google_account.py index 2d7c2375..9559b42a 100644 --- a/gluon/contrib/login_methods/gae_google_account.py +++ b/gluon/contrib/login_methods/gae_google_account.py @@ -36,3 +36,4 @@ class GaeGoogleAccount(object): return dict(nickname=user.nickname(), email=user.email(), user_id=user.user_id(), source="google account") + diff --git a/gluon/contrib/login_methods/ldap_auth.py b/gluon/contrib/login_methods/ldap_auth.py index 1df9b3b0..2eb76bcf 100644 --- a/gluon/contrib/login_methods/ldap_auth.py +++ b/gluon/contrib/login_methods/ldap_auth.py @@ -634,3 +634,4 @@ def ldap_auth(server='ldap', port=None, if filterstr[0] == '(' and filterstr[-1] == ')': # rfc4515 syntax filterstr = filterstr[1:-1] # parens added again where used return ldap_auth_aux + diff --git a/gluon/contrib/login_methods/linkedin_account.py b/gluon/contrib/login_methods/linkedin_account.py index b97cab97..f16deadd 100644 --- a/gluon/contrib/login_methods/linkedin_account.py +++ b/gluon/contrib/login_methods/linkedin_account.py @@ -49,3 +49,4 @@ class LinkedInAccount(object): username = profile.id) + diff --git a/gluon/contrib/login_methods/loginza.py b/gluon/contrib/login_methods/loginza.py index 2a665e42..a54e3ca9 100644 --- a/gluon/contrib/login_methods/loginza.py +++ b/gluon/contrib/login_methods/loginza.py @@ -110,3 +110,4 @@ class Loginza(object): SCRIPT(_src="https://s3-eu-west-1.amazonaws.com/s1.loginza.ru/js/widget.js", _type="text/javascript")) return form + diff --git a/gluon/contrib/login_methods/motp_auth.py b/gluon/contrib/login_methods/motp_auth.py index a776b3e4..8d2bfa70 100644 --- a/gluon/contrib/login_methods/motp_auth.py +++ b/gluon/contrib/login_methods/motp_auth.py @@ -6,24 +6,24 @@ from gluon.dal import DAL def motp_auth(db=DAL('sqlite://storage.sqlite'), time_offset=60): - + """ - motp allows you to login with a one time password(OTP) generated on a motp client, + motp allows you to login with a one time password(OTP) generated on a motp client, motp clients are available for practically all platforms. to know more about OTP visit http://en.wikipedia.org/wiki/One-time_password to know more visit http://motp.sourceforge.net - - + + Written by Madhukar R Pai (madspai@gmail.com) License : MIT or GPL v2 - + thanks and credits to the web2py community - + to use motp_auth: motp_auth.py has to be located in gluon/contrib/login_methods/ folder first auth_user has to have 2 extra fields - motp_secret and motp_pin for that define auth like shown below: - + ## after auth = Auth(db) db.define_table( auth.settings.table_user_name, @@ -42,7 +42,7 @@ def motp_auth(db=DAL('sqlite://storage.sqlite'), writable=False, readable=False, default=''), Field('registration_id', length=512, # required writable=False, readable=False, default='')) - + ##validators custom_auth_table = db[auth.settings.table_user_name] # get the custom_auth_table custom_auth_table.first_name.requires = \ @@ -53,22 +53,22 @@ def motp_auth(db=DAL('sqlite://storage.sqlite'), custom_auth_table.email.requires = [ IS_EMAIL(error_message=auth.messages.invalid_email), IS_NOT_IN_DB(db, custom_auth_table.email)] - + auth.settings.table_user = custom_auth_table # tell auth to use custom_auth_table ## before auth.define_tables() - - ##after that: - + + ##after that: + from gluon.contrib.login_methods.motp_auth import motp_auth auth.settings.login_methods.append(motp_auth(db=db)) - + ##Instructions for using MOTP - after configuring motp for web2py, Install a MOTP client on your phone (android,IOS, java, windows phone, etc) - - initialize the motp client (to reset a motp secret type in #**#), + - initialize the motp client (to reset a motp secret type in #**#), During user creation enter the secret generated during initialization into the motp_secret field in auth_user and similarly enter a pre-decided pin into the motp_pin - done.. to login, just generate a fresh OTP by typing in the pin and use the OTP as password - + ###To Dos### - both motp_secret and pin are stored in plain text! need to have some way of encrypting - web2py stores the password in db on successful login (should not happen) @@ -85,7 +85,7 @@ def motp_auth(db=DAL('sqlite://storage.sqlite'), hash = md5(to_hash).hexdigest()[:6] if otp == hash: return True return False - + def motp_auth_aux(email, password, db=db, @@ -102,3 +102,4 @@ def motp_auth(db=DAL('sqlite://storage.sqlite'), else: return False return False return motp_auth_aux + diff --git a/gluon/contrib/login_methods/oauth10a_account.py b/gluon/contrib/login_methods/oauth10a_account.py index fe388dde..534a7582 100644 --- a/gluon/contrib/login_methods/oauth10a_account.py +++ b/gluon/contrib/login_methods/oauth10a_account.py @@ -188,3 +188,4 @@ class OAuthAccount(object): + diff --git a/gluon/contrib/login_methods/oauth20_account.py b/gluon/contrib/login_methods/oauth20_account.py index 354fa9ba..8d740499 100644 --- a/gluon/contrib/login_methods/oauth20_account.py +++ b/gluon/contrib/login_methods/oauth20_account.py @@ -66,7 +66,7 @@ class OAuthAccount(object): if not self.accessToken(): return None - + if not self.graph: self.graph = GraphAPI((self.accessToken())) @@ -117,7 +117,7 @@ server for requests. It can be used for the optional"scope" parameters for Face """ Build the url opener for managing HTTP Basic Athentication """ - # Create an OpenerDirector with support + # Create an OpenerDirector with support # for Basic HTTP Authentication... auth_handler = urllib2.HTTPBasicAuthHandler() @@ -172,7 +172,7 @@ server for requests. It can be used for the optional"scope" parameters for Face if current.session.token.has_key('expires_in'): exps = 'expires_in' elif current.session.token.has_key('expires'): - exps = 'expires' + exps = 'expires' else: exps = None current.session.token['expires'] = exps and \ @@ -185,7 +185,7 @@ server for requests. It can be used for the optional"scope" parameters for Face current.session.token = None return None - def __init__(self, g=None, + def __init__(self, g=None, client_id=None, client_secret=None, auth_url=None, token_url=None, **args): """ @@ -215,7 +215,7 @@ server for requests. It can be used for the optional"scope" parameters for Face def get_user(self): """ Override this method by sublcassing the class. - + """ if not current.session.token: return None return dict(first_name = 'Pinco', @@ -274,3 +274,4 @@ server for requests. It can be used for the optional"scope" parameters for Face return current.session.code return None + diff --git a/gluon/contrib/login_methods/openid_auth.py b/gluon/contrib/login_methods/openid_auth.py index d754e5e4..a2c22633 100644 --- a/gluon/contrib/login_methods/openid_auth.py +++ b/gluon/contrib/login_methods/openid_auth.py @@ -630,3 +630,4 @@ class Web2pyStore(OpenIDStore): return self.cleanupNonces(), self.cleanupAssociations() + diff --git a/gluon/contrib/login_methods/pam_auth.py b/gluon/contrib/login_methods/pam_auth.py index a8a59523..31c343e0 100644 --- a/gluon/contrib/login_methods/pam_auth.py +++ b/gluon/contrib/login_methods/pam_auth.py @@ -20,3 +20,4 @@ def pam_auth(): return pam_auth_aux + diff --git a/gluon/contrib/login_methods/rpx_account.py b/gluon/contrib/login_methods/rpx_account.py index 46837cf5..34688a69 100644 --- a/gluon/contrib/login_methods/rpx_account.py +++ b/gluon/contrib/login_methods/rpx_account.py @@ -53,12 +53,12 @@ class RPXAccount(object): self.prompt = prompt self.on_login_failure = on_login_failure self.mappings = Storage() - + dn = {'givenName':'','familyName':''} self.mappings.Facebook = lambda profile, dn=dn:\ dict(registration_id = profile.get("identifier",""), username = profile.get("preferredUsername",""), - email = profile.get("email",""), + email = profile.get("email",""), first_name = profile.get("name",dn).get("givenName",""), last_name = profile.get("name",dn).get("familyName","")) self.mappings.Google = lambda profile, dn=dn:\ @@ -125,3 +125,4 @@ def use_janrain(auth,filename='private/janrain.key',**kwargs): ['register','change_password','request_reset_password'] auth.settings.login_form = RPXAccount( request, api_key=key,domain=domain, url = url,**kwargs) + diff --git a/gluon/contrib/login_methods/x509_auth.py b/gluon/contrib/login_methods/x509_auth.py index 09c3e922..36db643d 100644 --- a/gluon/contrib/login_methods/x509_auth.py +++ b/gluon/contrib/login_methods/x509_auth.py @@ -53,7 +53,7 @@ class X509Auth(object): # cn = self.subject.cn self.subject = Storage(filter(None, map(lambda x: - (x,map(lambda y: + (x,map(lambda y: y.get_data().as_text(), subject.get_entries_by_nid(subject.nid[x]))), subject.nid.keys()))) @@ -63,7 +63,7 @@ class X509Auth(object): def login_form(self, **args): raise HTTP(403,'Login not allowed. No valid x509 crentials') - + def login_url(self, next="/"): raise HTTP(403,'Login not allowed. No valid x509 crentials') @@ -102,3 +102,4 @@ class X509Auth(object): return profile + diff --git a/gluon/contrib/markmin/markmin2html.py b/gluon/contrib/markmin/markmin2html.py index 162dd6d1..8e6431bc 100755 --- a/gluon/contrib/markmin/markmin2html.py +++ b/gluon/contrib/markmin/markmin2html.py @@ -801,7 +801,7 @@ def render(text, # this is experimental @{function/args} # turns into a digitally signed URL def u1(match,URL=URL): - a,c,f,args = match.group('a','c','f','args') + a,c,f,args = match.group('a','c','f','args') return URL(a=a or None,c=c or None,f = f or None, args=args.split('/'), scheme=True, host=True) text = regex_URL.sub(u1,text) diff --git a/gluon/contrib/memdb.py b/gluon/contrib/memdb.py index ee25566d..ae2189aa 100644 --- a/gluon/contrib/memdb.py +++ b/gluon/contrib/memdb.py @@ -911,3 +911,4 @@ if __name__ == '__main__': + diff --git a/gluon/contrib/pam.py b/gluon/contrib/pam.py index 57b9e5be..4622b7cc 100644 --- a/gluon/contrib/pam.py +++ b/gluon/contrib/pam.py @@ -127,3 +127,4 @@ if __name__ == "__main__": + diff --git a/gluon/contrib/pbkdf2.py b/gluon/contrib/pbkdf2.py index c751b4be..a58a9dd1 100644 --- a/gluon/contrib/pbkdf2.py +++ b/gluon/contrib/pbkdf2.py @@ -129,3 +129,4 @@ def test(): if __name__ == '__main__': test() + diff --git a/gluon/contrib/populate.py b/gluon/contrib/populate.py index efd90670..38760f00 100644 --- a/gluon/contrib/populate.py +++ b/gluon/contrib/populate.py @@ -171,3 +171,4 @@ if __name__ == '__main__': + diff --git a/gluon/contrib/pyfpdf.py b/gluon/contrib/pyfpdf.py index 26fc2940..1cc8c8f0 100644 --- a/gluon/contrib/pyfpdf.py +++ b/gluon/contrib/pyfpdf.py @@ -9,3 +9,4 @@ from fpdf import * # import warnings # warnings.warn("pyfpdf package name is deprecated, please use fpdf instead") + diff --git a/gluon/contrib/qdb.py b/gluon/contrib/qdb.py index bb6ecc0e..a23038d2 100644 --- a/gluon/contrib/qdb.py +++ b/gluon/contrib/qdb.py @@ -964,3 +964,4 @@ if __name__ == '__main__': + diff --git a/gluon/contrib/redis_cache.py b/gluon/contrib/redis_cache.py index 3a1a47fa..2f2366d9 100644 --- a/gluon/contrib/redis_cache.py +++ b/gluon/contrib/redis_cache.py @@ -167,3 +167,4 @@ class RedisClient(object): + diff --git a/gluon/contrib/rss2.py b/gluon/contrib/rss2.py index 8f1a601e..47fde9d2 100644 --- a/gluon/contrib/rss2.py +++ b/gluon/contrib/rss2.py @@ -592,3 +592,4 @@ if __name__ == '__main__': + diff --git a/gluon/contrib/shell.py b/gluon/contrib/shell.py index d40400b3..227a1aec 100755 --- a/gluon/contrib/shell.py +++ b/gluon/contrib/shell.py @@ -270,3 +270,4 @@ if __name__=='__main__': + diff --git a/gluon/contrib/simplejsonrpc.py b/gluon/contrib/simplejsonrpc.py index 865bb1c4..5a29b5b8 100644 --- a/gluon/contrib/simplejsonrpc.py +++ b/gluon/contrib/simplejsonrpc.py @@ -151,3 +151,4 @@ if __name__ == "__main__": + diff --git a/gluon/contrib/sms_utils.py b/gluon/contrib/sms_utils.py index 29a50226..5777661e 100644 --- a/gluon/contrib/sms_utils.py +++ b/gluon/contrib/sms_utils.py @@ -116,3 +116,4 @@ def sms_email(number,provider): + diff --git a/gluon/contrib/spreadsheet.py b/gluon/contrib/spreadsheet.py index b343eb31..b13dced0 100644 --- a/gluon/contrib/spreadsheet.py +++ b/gluon/contrib/spreadsheet.py @@ -879,3 +879,4 @@ if __name__ == '__main__': print s['c'].computed_value + diff --git a/gluon/contrib/stripe.py b/gluon/contrib/stripe.py index fc1a12b9..dbde9117 100644 --- a/gluon/contrib/stripe.py +++ b/gluon/contrib/stripe.py @@ -66,3 +66,4 @@ if __name__=='__main__': + diff --git a/gluon/contrib/taskbar_widget.py b/gluon/contrib/taskbar_widget.py index 8009c93f..8f9cba9e 100644 --- a/gluon/contrib/taskbar_widget.py +++ b/gluon/contrib/taskbar_widget.py @@ -247,3 +247,4 @@ class TaskBarIcon: + diff --git a/gluon/contrib/timecollect.py b/gluon/contrib/timecollect.py index 229ac2e5..601b7fb2 100644 --- a/gluon/contrib/timecollect.py +++ b/gluon/contrib/timecollect.py @@ -95,3 +95,4 @@ if __name__=='__main__': print(t.getReportText(orderByCost=False)) + diff --git a/gluon/contrib/user_agent_parser.py b/gluon/contrib/user_agent_parser.py index c326e92c..e84f4892 100644 --- a/gluon/contrib/user_agent_parser.py +++ b/gluon/contrib/user_agent_parser.py @@ -520,3 +520,4 @@ class mobilize(object): + diff --git a/gluon/custom_import.py b/gluon/custom_import.py index f31d3630..afcaff33 100644 --- a/gluon/custom_import.py +++ b/gluon/custom_import.py @@ -329,3 +329,4 @@ class _Web2pyDateTrackerImporter(_Web2pyImporter, _DateTrackerImporter): + diff --git a/gluon/dal.py b/gluon/dal.py index 0d34e0b3..7c63d6d9 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6932,7 +6932,7 @@ def index(): tablename, *fields, **args - ): + ): if not isinstance(tablename,str): raise SyntaxError, "missing table name" elif tablename.startswith('_') or hasattr(self,tablename) or \ @@ -6946,7 +6946,7 @@ def index(): invalid_args = [key for key in args if not key in TABLE_ARGS] if invalid_args: raise SyntaxError, 'invalid table "%s" attributes: %s' \ - % (tablename,invalid_args) + % (tablename,invalid_args) if self._lazy_tables and not tablename in self._LAZY_TABLES: self._LAZY_TABLES[tablename] = (tablename,fields,args) table = None @@ -6985,7 +6985,7 @@ def index(): sql_locker.release() else: table._dbt = None - on_define = args.get('on_define',None) + on_define = args.get('on_define',None) if on_define: on_define(table) return table @@ -7065,7 +7065,7 @@ def index(): to or instead of including Field objects, or it can be just a single table (not in a list). In that case, the Field objects will be extracted from the table(s). - + The field names will be extracted from the Field objects, or optionally, a list of field names can be provided (in tablename.fieldname format) via the "colnames" argument. Note, the fields and colnames must be in @@ -7100,7 +7100,7 @@ def index(): else: extracted_fields.append(field) if not colnames: - colnames = ['%s.%s' % (f.tablename, f.name) + colnames = ['%s.%s' % (f.tablename, f.name) for f in extracted_fields] data = self._adapter.parse( data, fields=extracted_fields, colnames=colnames) @@ -7498,7 +7498,7 @@ class Table(dict): 'value must be a dictionary: %s' % value dict.__setitem__(self, str(key), value) - def __getattr__(self, key): + def __getattr__(self, key): return self[key] def __delitem__(self, key): @@ -9153,3 +9153,4 @@ if __name__ == '__main__': + diff --git a/gluon/debug.py b/gluon/debug.py index 6cb29b7f..b638cc12 100644 --- a/gluon/debug.py +++ b/gluon/debug.py @@ -192,3 +192,4 @@ gluon.main.global_settings.debugging = True + diff --git a/gluon/decoder.py b/gluon/decoder.py index 713a2c75..4eecf8ab 100644 --- a/gluon/decoder.py +++ b/gluon/decoder.py @@ -78,3 +78,4 @@ def decoder(buffer): + diff --git a/gluon/fileutils.py b/gluon/fileutils.py index f66c5fb7..fd23c604 100644 --- a/gluon/fileutils.py +++ b/gluon/fileutils.py @@ -397,3 +397,4 @@ def abspath(*relpath, **base): return os.path.join(global_settings.applications_parent, path) + diff --git a/gluon/globals.py b/gluon/globals.py index 23723731..7bf41549 100644 --- a/gluon/globals.py +++ b/gluon/globals.py @@ -101,7 +101,7 @@ class Request(Storage): self.is_https = False self.is_local = False self.global_settings = settings.global_settings - + def compute_uuid(self): self.uuid = '%s/%s.%s.%s' % ( self.application, @@ -691,3 +691,4 @@ class Session(Storage): + diff --git a/gluon/highlight.py b/gluon/highlight.py index 93c810c4..59332571 100644 --- a/gluon/highlight.py +++ b/gluon/highlight.py @@ -348,3 +348,4 @@ if __name__ == '__main__': + diff --git a/gluon/html.py b/gluon/html.py index 8522b7a5..b758c597 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -962,7 +962,7 @@ class DIV(XmlComponent): >>> for c in a.elements('input, select, textarea'): c['_disabled'] = 'disabled' >>> a.xml() '
' - + Elements that are matched can also be replaced or removed by specifying a "replace" argument (note, a list of the original matching elements is still returned as usual). @@ -2503,3 +2503,4 @@ if __name__ == '__main__': + diff --git a/gluon/http.py b/gluon/http.py index bf8f55ef..c4389b9e 100644 --- a/gluon/http.py +++ b/gluon/http.py @@ -142,3 +142,4 @@ def redirect(location, how=303, client_side=False): + diff --git a/gluon/import_all.py b/gluon/import_all.py index 01c4e8c6..46f231b8 100644 --- a/gluon/import_all.py +++ b/gluon/import_all.py @@ -113,3 +113,4 @@ for module in base_modules + contributed_modules: + diff --git a/gluon/languages.py b/gluon/languages.py index 24f41a49..2c8231d5 100644 --- a/gluon/languages.py +++ b/gluon/languages.py @@ -939,3 +939,4 @@ if __name__ == '__main__': doctest.testmod() + diff --git a/gluon/main.py b/gluon/main.py index 5aa0f15a..29a17992 100644 --- a/gluon/main.py +++ b/gluon/main.py @@ -854,3 +854,4 @@ class HttpServer(object): + diff --git a/gluon/messageboxhandler.py b/gluon/messageboxhandler.py index 17184a57..d22ce719 100644 --- a/gluon/messageboxhandler.py +++ b/gluon/messageboxhandler.py @@ -14,3 +14,4 @@ class MessageBoxHandler(logging.Handler): msg = self.format(record) tkMessageBox.showinfo('info1', msg) + diff --git a/gluon/myregex.py b/gluon/myregex.py index 04b48b73..9808a8cb 100644 --- a/gluon/myregex.py +++ b/gluon/myregex.py @@ -32,3 +32,4 @@ regex_extend = re.compile(\ + diff --git a/gluon/newcron.py b/gluon/newcron.py index ff917551..a238b8a8 100644 --- a/gluon/newcron.py +++ b/gluon/newcron.py @@ -343,3 +343,4 @@ def crondance(applications_parent, ctype='soft', startup=False, apps=None): + diff --git a/gluon/portalocker.py b/gluon/portalocker.py index 36c94547..f516e73e 100644 --- a/gluon/portalocker.py +++ b/gluon/portalocker.py @@ -151,3 +151,4 @@ if __name__=='__main__': + diff --git a/gluon/reserved_sql_keywords.py b/gluon/reserved_sql_keywords.py index 713ac48d..698768c8 100644 --- a/gluon/reserved_sql_keywords.py +++ b/gluon/reserved_sql_keywords.py @@ -1717,3 +1717,4 @@ ADAPTERS['all'] = reduce(lambda a,b:a.union(b),(x for x in ADAPTERS.values())) + diff --git a/gluon/restricted.py b/gluon/restricted.py index 770fe48e..74f3b34c 100644 --- a/gluon/restricted.py +++ b/gluon/restricted.py @@ -308,3 +308,4 @@ def snapshot(info=None, context=5, code=None, environment=None): + diff --git a/gluon/rewrite.py b/gluon/rewrite.py index 14bb1dc6..d7faf450 100644 --- a/gluon/rewrite.py +++ b/gluon/rewrite.py @@ -476,7 +476,7 @@ def load_routers(all_apps): def regex_uri(e, regexes, tag, default=None): "filter incoming URI against a list of regexes" path = e['PATH_INFO'] - host = e.get('http_host', e.get('SERVER_NAME','localhost')).lower() + host = e.get('http_host', e.get('SERVER_NAME','localhost')).lower() i = host.find(':') if i > 0: host = host[:i] @@ -1311,3 +1311,4 @@ def get_effective_router(appname): + diff --git a/gluon/rocket.py b/gluon/rocket.py index a091d8d2..12fd8dc6 100644 --- a/gluon/rocket.py +++ b/gluon/rocket.py @@ -2085,3 +2085,4 @@ if __name__=='__main__': + diff --git a/gluon/sanitizer.py b/gluon/sanitizer.py index 5e88f6e4..fa5ffc4e 100644 --- a/gluon/sanitizer.py +++ b/gluon/sanitizer.py @@ -228,3 +228,4 @@ def sanitize(text, permitted_tags=[ + diff --git a/gluon/scheduler.py b/gluon/scheduler.py index 1875fe7e..9e585d39 100644 --- a/gluon/scheduler.py +++ b/gluon/scheduler.py @@ -869,3 +869,4 @@ def main(): if __name__=='__main__': main() + diff --git a/gluon/serializers.py b/gluon/serializers.py index 8af80157..8934c9b2 100644 --- a/gluon/serializers.py +++ b/gluon/serializers.py @@ -117,3 +117,4 @@ def rss(feed): + diff --git a/gluon/settings.py b/gluon/settings.py index 19617882..3715edc6 100644 --- a/gluon/settings.py +++ b/gluon/settings.py @@ -34,3 +34,4 @@ global_settings.is_jython = 'java' in sys.platform.lower() or \ str(sys.copyright).find('Jython') > 0 + diff --git a/gluon/shell.py b/gluon/shell.py index 50f6d9f3..011ecb6d 100644 --- a/gluon/shell.py +++ b/gluon/shell.py @@ -431,3 +431,4 @@ if __name__ == '__main__': + diff --git a/gluon/sql.py b/gluon/sql.py index c9304adb..1a43f4cc 100644 --- a/gluon/sql.py +++ b/gluon/sql.py @@ -9,3 +9,4 @@ from dal import DAL, Field, Table, Query, Set, Expression, Row, Rows, drivers, B + diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 0436ce0d..b3df0aee 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -239,7 +239,7 @@ class ListWidget(StringWidget): else: _class = 'string' requires = field.requires if isinstance(field.requires, (IS_NOT_EMPTY, IS_LIST_OF)) else None attributes['_style'] = 'list-style:none' - items=[LI(INPUT(_id=_id, _class=_class, _name=_name, + items=[LI(INPUT(_id=_id, _class=_class, _name=_name, value=v, hideerror=True, requires=requires), **attributes) for v in value or ['']] script=SCRIPT(""" @@ -2669,3 +2669,4 @@ class ExporterXML(ExportClass): + diff --git a/gluon/storage.py b/gluon/storage.py index 1b6da5c1..ce47381c 100644 --- a/gluon/storage.py +++ b/gluon/storage.py @@ -172,7 +172,7 @@ class Messages(Settings): class FastStorage(dict): """ - Eventually this should replace class Storage but causes memory leak + Eventually this should replace class Storage but causes memory leak because of http://bugs.python.org/issue1469629 >>> s = FastStorage() @@ -205,7 +205,7 @@ class FastStorage(dict): >>> s['a'] >>> s['b'] """ - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs): dict.__init__(self, *args, **kwargs) self.__dict__ = self def __getattr__(self,key): @@ -269,3 +269,4 @@ if __name__ == '__main__': + diff --git a/gluon/streamer.py b/gluon/streamer.py index 2a25aa52..a46ae7cf 100644 --- a/gluon/streamer.py +++ b/gluon/streamer.py @@ -112,3 +112,4 @@ def stream_file_or_304_or_206( + diff --git a/gluon/template.py b/gluon/template.py index 06d01023..9f147895 100644 --- a/gluon/template.py +++ b/gluon/template.py @@ -913,7 +913,7 @@ def render(content = "hello world", # Add it to the context so we can use it. if not 'NOESCAPE' in context: context['NOESCAPE'] = XML - + # save current response class if context and 'response' in context: old_response_body = context['response'].body @@ -926,7 +926,7 @@ def render(content = "hello world", if not content and not stream and not filename: raise SyntaxError, "Must specify a stream or filename or content" - # Here for legacy purposes, probably can be reduced to + # Here for legacy purposes, probably can be reduced to # something more simple. close_stream = False if not stream: @@ -963,3 +963,4 @@ if __name__ == '__main__': + diff --git a/gluon/tools.py b/gluon/tools.py index 25f48d07..ce086c9d 100644 --- a/gluon/tools.py +++ b/gluon/tools.py @@ -1410,9 +1410,9 @@ class Auth(object): passfield = settings.password_field extra_fields = settings.extra_fields.get( settings.table_user_name,[])+signature_list - if username or settings.cas_provider: + if username or settings.cas_provider: is_unique_username = \ - [IS_MATCH('[\w\.\-]+'), + [IS_MATCH('[\w\.\-]+'), IS_NOT_IN_DB(db,'%s.username' % settings.table_user_name)] if not settings.username_case_sensitive: is_unique_username.insert(1,IS_LOWER()) @@ -1584,7 +1584,7 @@ class Auth(object): 'request_reset_password'] from gluon.contrib.login_methods.cas_auth import CasAuth maps = settings.cas_maps - if not maps: + if not maps: table_user = self.table_user() maps = dict((name,lambda v,n=name:v.get(n,None)) for name in \ table_user.fields if name!='id' \ @@ -2476,7 +2476,7 @@ class Auth(object): separator=self.settings.label_separator ) if captcha: - addrow(form, captcha.label, captcha, captcha.comment, self.settings.formstyle,'captcha__row') + addrow(form, captcha.label, captcha, captcha.comment, self.settings.formstyle,'captcha__row') if form.accepts(request, session, formname='reset_password', dbio=False, onvalidation=onvalidation, @@ -3133,7 +3133,7 @@ class Auth(object): archive_table_name, Field(current_record,table), *[field.clone(unique=False) for field in table]) - archive_table = table._db[archive_table_name] + archive_table = table._db[archive_table_name] new_record = {current_record:form.vars.id} for fieldname in archive_table.fields: if not fieldname in ['id',current_record]: @@ -4484,7 +4484,7 @@ class Wiki(object): def __init__(self,auth,env=None,render='markmin', manage_permissions=False,force_prefix=''): self.env = env or {} - self.env['component'] = Wiki.component + self.env['component'] = Wiki.component if render == 'markmin': render=self.markmin_render self.auth = auth if self.auth.user: @@ -4536,7 +4536,7 @@ class Wiki(object): not 'wiki_editor' in auth.user_groups.values(): group = db.auth_group(role='wiki_editor') gid = group.id if group else db.auth_group.insert(role='wiki_editor') - auth.add_membership(gid) + auth.add_membership(gid) # WIKI ACCESS POLICY def not_authorized(self,page=None): raise HTTP(401) @@ -4604,7 +4604,7 @@ class Wiki(object): def fix_hostname(self,body): return body.replace('://HOSTNAME','://%s' % self.host) - + def read(self,slug): if slug in '_cloud': return self.cloud() elif slug in '_search': return self.search() @@ -4674,7 +4674,7 @@ class Wiki(object): def editmedia(self,slug): auth = self.auth - db = auth.db + db = auth.db page = db.wiki_page(slug=slug) if not (page and self.can_edit(page)): return self.not_authorized(page) self.auth.db.wiki_media.id.represent = lambda id,row:\ @@ -4739,9 +4739,9 @@ class Wiki(object): for match in regex.finditer(self.fix_hostname(menu_page.body)): base = match.group('base').replace(' ','') title = match.group('title') - link = match.group('link') + link = match.group('link') if link.startswith('@'): - items = link[1:].split('/') + items = link[2:].split('/') if len(items)>3: link = URL(a=items[0] or None,c=items[1] or None,f=items[2] or None, args=items[3:]) parent = tree.get(base[1:],tree['']) @@ -4863,3 +4863,4 @@ if __name__ == '__main__': + diff --git a/gluon/utf8.py b/gluon/utf8.py index 794489af..1af3fe15 100644 --- a/gluon/utf8.py +++ b/gluon/utf8.py @@ -654,3 +654,4 @@ if __name__ == '__main__': doctests() + diff --git a/gluon/utils.py b/gluon/utils.py index 963d89a0..92e58010 100644 --- a/gluon/utils.py +++ b/gluon/utils.py @@ -186,3 +186,4 @@ def is_valid_ip_address(address): + diff --git a/gluon/validators.py b/gluon/validators.py index 27fae504..eebf54ef 100644 --- a/gluon/validators.py +++ b/gluon/validators.py @@ -3153,3 +3153,4 @@ if __name__ == '__main__': + diff --git a/gluon/widget.py b/gluon/widget.py index a2b84ac2..13114466 100644 --- a/gluon/widget.py +++ b/gluon/widget.py @@ -929,10 +929,10 @@ def console(): scheduler.append(opt.split(':')) options.scheduler = ','.join([app[0] for app in scheduler]) options.scheduler_groups = scheduler - + if options.numthreads is not None and options.minthreads is None: - options.minthreads = options.numthreads # legacy - + options.minthreads = options.numthreads # legacy + if not options.cronjob: # If we have the applications package or if we should upgrade if not os.path.exists('applications/__init__.py'): @@ -1205,3 +1205,4 @@ end tell + diff --git a/gluon/winservice.py b/gluon/winservice.py index aa762a15..48b58e91 100644 --- a/gluon/winservice.py +++ b/gluon/winservice.py @@ -172,3 +172,4 @@ if __name__ == '__main__': + diff --git a/gluon/xmlrpc.py b/gluon/xmlrpc.py index 24fd8f9c..6bf931cb 100644 --- a/gluon/xmlrpc.py +++ b/gluon/xmlrpc.py @@ -25,3 +25,4 @@ def handler(request, response, methods): + diff --git a/isapiwsgihandler.py b/isapiwsgihandler.py index 9a5c891a..28973d2d 100644 --- a/isapiwsgihandler.py +++ b/isapiwsgihandler.py @@ -37,3 +37,4 @@ if __name__=='__main__': + diff --git a/modpythonhandler.py b/modpythonhandler.py index add46cd3..4ed135f1 100755 --- a/modpythonhandler.py +++ b/modpythonhandler.py @@ -226,3 +226,4 @@ def handler(req): + diff --git a/options_std.py b/options_std.py index feb0a48f..85cd071b 100644 --- a/options_std.py +++ b/options_std.py @@ -31,3 +31,4 @@ shutdown_timeout = 5 folder = os.getcwd() extcron = None nocron = None + diff --git a/router.example.py b/router.example.py index a98b5436..fef9737c 100644 --- a/router.example.py +++ b/router.example.py @@ -213,3 +213,4 @@ if __name__ == '__main__': + diff --git a/routes.example.py b/routes.example.py index c48bd282..ea7a8142 100644 --- a/routes.example.py +++ b/routes.example.py @@ -174,3 +174,4 @@ if __name__ == '__main__': + diff --git a/scgihandler.py b/scgihandler.py index dbadb1d4..e0dd6593 100755 --- a/scgihandler.py +++ b/scgihandler.py @@ -75,3 +75,4 @@ SCGIServer(application, port=4000).enable_sighandler().run() + diff --git a/setup.py b/setup.py index 25c4f173..3dbc628e 100644 --- a/setup.py +++ b/setup.py @@ -81,3 +81,4 @@ if __name__ == '__main__': + diff --git a/setup_app.py b/setup_app.py index 67e0da5b..cb57c8fc 100755 --- a/setup_app.py +++ b/setup_app.py @@ -56,3 +56,4 @@ setup(app=['web2py.py'], + diff --git a/setup_exe.py b/setup_exe.py index dda70ca0..9b6e88e0 100755 --- a/setup_exe.py +++ b/setup_exe.py @@ -186,3 +186,4 @@ print "Enjoy web2py " +web2py_version_line + diff --git a/setup_exe_2.6.py b/setup_exe_2.6.py index fcb49525..cec07199 100644 --- a/setup_exe_2.6.py +++ b/setup_exe_2.6.py @@ -168,3 +168,4 @@ print "Enjoy web2py " +web2py_version_line + diff --git a/web2py.py b/web2py.py index 3446da0a..fbd402e9 100755 --- a/web2py.py +++ b/web2py.py @@ -29,3 +29,4 @@ if __name__ == '__main__': + diff --git a/wsgihandler.py b/wsgihandler.py index 590f2b46..85368eb3 100644 --- a/wsgihandler.py +++ b/wsgihandler.py @@ -46,3 +46,4 @@ if SOFTCRON: +