fixed some pep8 stuff

This commit is contained in:
mdipierro
2012-10-19 09:40:17 -05:00
parent de2337dfe3
commit d552eb2eeb
128 changed files with 267 additions and 140 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.1.1 (2012-10-18 18:20:45) dev
Version 2.1.1 (2012-10-19 09:40:10) dev
+2
View File
@@ -8,3 +8,5 @@
+1
View File
@@ -310,3 +310,4 @@ if __name__=='__main__':
+1
View File
@@ -7,3 +7,4 @@ def webapp_add_wsgi_middleware(app):
@@ -444,3 +444,4 @@ def ccache():
+16 -15
View File
@@ -51,7 +51,7 @@ def interact():
lineno = web_debugger.lineno
if filename:
lines = dict([(i+1, l) for (i, l) in enumerate(
[l.strip("\n").strip("\r") for l
[l.strip("\n").strip("\r") for l
in open(filename).readlines()])])
filename = os.path.basename(filename)
else:
@@ -76,9 +76,9 @@ def interact():
response.flash = T('"User Exception" debug mode. '
'An error ticket could be issued!')
return dict(app=app, data="",
filename=web_debugger.filename, lines=lines, lineno=lineno,
f_globals=f_globals, f_locals=f_locals,
return dict(app=app, data="",
filename=web_debugger.filename, lines=lines, lineno=lineno,
f_globals=f_globals, f_locals=f_locals,
exception=web_debugger.exception_info)
def step():
@@ -120,8 +120,8 @@ def breakpoints():
# Get all .py files
files = listdir(apath('', r=request), '.*\.py$')
files = [filename for filename in files
if filename and 'languages' not in filename
files = [filename for filename in files
if filename and 'languages' not in filename
and not filename.startswith("admin")
and not filename.startswith("examples")]
@@ -129,16 +129,16 @@ def breakpoints():
Field('filename', requires=IS_IN_SET(files), label=T("Filename")),
Field('lineno', 'integer', label=T("Line number"),
requires=IS_NOT_EMPTY()),
Field('temporary', 'boolean', label=T("Temporary"),
Field('temporary', 'boolean', label=T("Temporary"),
comment=T("deleted after first hit")),
Field('condition', 'string', label=T("Condition"),
comment=T("honored only if the expression evaluates to true")),
)
if form.accepts(request.vars, session):
filename = os.path.join(request.env['applications_parent'],
filename = os.path.join(request.env['applications_parent'],
'applications', form.vars.filename)
err = qdb_debugger.do_set_breakpoint(filename,
err = qdb_debugger.do_set_breakpoint(filename,
form.vars.lineno,
form.vars.temporary,
form.vars.condition)
@@ -150,9 +150,9 @@ def breakpoints():
qdb_debugger.do_clear(item[7:])
breakpoints = [{'number': bp[0], 'filename': os.path.basename(bp[1]),
'path': bp[1], 'lineno': bp[2],
'temporary': bp[3], 'enabled': bp[4], 'hits': bp[5],
'condition': bp[6]}
'path': bp[1], 'lineno': bp[2],
'temporary': bp[3], 'enabled': bp[4], 'hits': bp[5],
'condition': bp[6]}
for bp in qdb_debugger.do_list_breakpoint()]
return dict(breakpoints=breakpoints, form=form)
@@ -160,11 +160,11 @@ def breakpoints():
def toggle_breakpoint():
"Set or clear a breakpoint"
lineno = None
ok = None
try:
filename = os.path.join(request.env['applications_parent'],
filename = os.path.join(request.env['applications_parent'],
'applications', request.vars.filename)
if not request.vars.data:
# ace send us the line number!
@@ -184,7 +184,7 @@ def toggle_breakpoint():
no, bp_filename, bp_lineno, temporary, enabled, hits, cond = bp
if filename == bp_filename and lineno == bp_lineno:
err = qdb_debugger.do_clear_breakpoint(filename, lineno)
response.flash = T("Removed Breakpoint on %s at line %s", (
response.flash = T("Removed Breakpoint on %s at line %s", (
filename, lineno))
ok = False
break
@@ -199,3 +199,4 @@ def toggle_breakpoint():
session.flash = str(e)
return response.json({'ok': ok, 'lineno': lineno})
+10 -9
View File
@@ -213,7 +213,7 @@ def site():
else:
session.flash = \
DIV(T('unable to create application "%s"' % appname),
PRE(error))
PRE(error))
redirect(URL(r=request))
elif form_update.accepted:
@@ -241,18 +241,18 @@ def site():
DIV(T('Unable to download app because:'),PRE(str(e)))
redirect(URL(r=request))
fname = form_update.vars.url
elif form_update.accepted and form_update.vars.file:
fname = request.vars.file.filename
f = request.vars.file.file
else:
session.flash = 'No file uploaded and no URL specified'
redirect(URL(r=request))
if f:
appname = cleanpath(form_update.vars.name)
installed = app_install(appname, f,
installed = app_install(appname, f,
request, fname,
overwrite=form_update.vars.overwrite)
if f and installed:
@@ -282,7 +282,7 @@ def site():
apps = sorted(apps,lambda a,b:cmp(a.upper(),b.upper()))
return dict(app=None, apps=apps, myversion=myversion,
return dict(app=None, apps=apps, myversion=myversion,
form_create=form_create, form_update=form_update)
@@ -340,7 +340,7 @@ def pack_plugin():
def upgrade_web2py():
dialog = FORM.confirm(T('Upgrade'),
{T('Cancel'):URL('site')})
{T('Cancel'):URL('site')})
if dialog.accepted:
(success, error) = upgrade(request)
if success:
@@ -355,7 +355,7 @@ def uninstall():
dialog = FORM.confirm(T('Uninstall'),
{T('Cancel'):URL('site')})
if dialog.accepted:
if MULTI_USER_MODE:
if is_manager() and db(db.app.name==app).delete():
@@ -1227,7 +1227,7 @@ def create_file():
if request.vars.plugin and not filename.startswith('plugin_%s/' % request.vars.plugin):
filename = 'plugin_%s/%s' % (request.vars.plugin, filename)
text = ''
else:
redirect(request.vars.sender+anchor)
@@ -1641,7 +1641,7 @@ def git_pull():
session.flash = GIT_MISSING
redirect(URL('site'))
dialog = FORM.confirm(T('Pull'),
{T('Cancel'):URL('site')})
{T('Cancel'):URL('site')})
if dialog.accepted:
try:
repo = Repo(os.path.join(apath(r=request),app))
@@ -1698,3 +1698,4 @@ def git_push():
redirect(URL('site'))
return dict(app=app,form=form)
+1
View File
@@ -91,3 +91,4 @@ def callback():
return (output+errors).replace('\n','<br/>')
@@ -82,3 +82,4 @@ def revision():
)
+4 -3
View File
@@ -26,7 +26,7 @@ def deploy():
kill()
except:
pass
ignore_apps = [item for item in apps if not item in form.vars.applications]
regex = re.compile('\(applications/\(.*')
w2p_origin = os.getcwd()
@@ -44,13 +44,13 @@ def deploy():
#shutil.copytree(appsrc,appdest)
index.add(['wsgi/'+osname+'/applications/'+i])
new_commit = index.commit("Deploy from Web2py IDE")
origin = repo.remotes.origin
origin.push
origin.push()
#Git code ends here
return dict(form=form,command=cmd)
class EXISTS(object):
def __init__(self, error_message='file not found'):
self.error_message = error_message
@@ -58,3 +58,4 @@ class EXISTS(object):
if os.path.exists(value):
return (value,None)
return (value,self.error_message)
@@ -8,3 +8,4 @@ def about():
return locals()
+1
View File
@@ -45,3 +45,4 @@ def reset():
return 'done'
@@ -29,3 +29,4 @@ def profiler():
return data
@@ -90,7 +90,7 @@ def attach_debugger(host='localhost', port=6000, authkey='secret password'):
if isinstance(authkey, unicode):
authkey = authkey.encode('utf8')
if not hasattr(gluon.debug, 'qdb_listener'):
# create a remote debugger server and wait for connection
address = (host, port) # family is deduced to be 'AF_INET'
@@ -128,3 +128,4 @@ def call():
session.forget()
return service()
+1
View File
@@ -556,3 +556,4 @@ def call(): return service()
os.unlink(file)
+3 -2
View File
@@ -13,9 +13,9 @@ TEXT_EDITOR = 'codemirror' or 'ace' or 'edit_area' or 'amy'
## Editor Color scheme (only for ace)
TEXT_EDITOR_THEME = (
"chrome", "clouds", "clouds_midnight", "cobalt", "crimson_editor", "dawn",
"chrome", "clouds", "clouds_midnight", "cobalt", "crimson_editor", "dawn",
"dreamweaver", "eclipse", "idle_fingers", "kr_theme", "merbivore",
"merbivore_soft", "monokai", "mono_industrial", "pastel_on_dark",
"merbivore_soft", "monokai", "mono_industrial", "pastel_on_dark",
"solarized_dark", "solarized_light", "textmate", "tomorrow",
"tomorrow_night", "tomorrow_night_blue", "tomorrow_night_bright",
"tomorrow_night_eighties", "twilight", "vibrant_ink")[0]
@@ -80,3 +80,4 @@ if 'adminLanguage' in request.cookies and not (request.cookies['adminLanguage']
T.force(request.cookies['adminLanguage'].value)
+1
View File
@@ -30,3 +30,4 @@ from gluon.restricted import *
from gluon.compileapp import compile_application, remove_compiled_application
+2 -1
View File
@@ -147,7 +147,7 @@ if request.controller == "webservices":
time.sleep(10)
raise HTTP(403,"Not authorized")
elif not session.authorized and not \
(request.controller+'/'+request.function in
(request.controller+'/'+request.function in
('default/index','default/user','plugin_jqmobile/index','plugin_jqmobile/about')):
if request.env.query_string:
@@ -169,3 +169,4 @@ if request.controller=='appadmin' and DEMO_MODE:
session.flash = 'Appadmin disabled in demo mode'
redirect(URL('default','sites'))
+1
View File
@@ -36,3 +36,4 @@ def searchbox(elementid):
return TAG[''](LABEL(IMG(_id="search_start",_src=URL('static', 'images/search.png'), _alt=T('filter')), _class='icon', _for=elementid), ' ', INPUT(_id=elementid, _type='text', _size=12))
+1
View File
@@ -38,3 +38,4 @@ def is_manager():
return False
+2 -1
View File
@@ -26,7 +26,7 @@ if not session.authorized:
else:
response.menu.append((T('Logout'), False,
URL(_a,'default',f='logout')))
response.menu.append((T('Debug'), False,
response.menu.append((T('Debug'), False,
URL(_a, 'debug','interact')))
if os.path.exists('applications/examples'):
@@ -35,3 +35,4 @@ else:
response.menu.append((T('Help'), False, 'http://web2py.com/examples'))
@@ -3,3 +3,4 @@ response.files.append(URL('static','plugin_multiselect/multi-select.css'))
response.files.append(URL('static','plugin_multiselect/start.js'))
@@ -21,3 +21,4 @@ def fade():
@@ -444,3 +444,4 @@ def ccache():
@@ -49,3 +49,4 @@ def cache_controller_and_view():
return response.render(d)
@@ -74,3 +74,4 @@ def changelog():
filename = os.path.join(request.env.gluon_parent, 'CHANGELOG')
return response.render(dict(changelog=MARKMIN(read_file(filename))))
@@ -26,3 +26,4 @@ def form():
@@ -80,3 +80,4 @@ def vars():
@@ -23,3 +23,4 @@ def basic():
@@ -11,3 +11,4 @@ def counter():
@@ -138,3 +138,4 @@ Quoted text
def ajaxwiki_onclick():
return MARKMIN(request.vars.text).xml()
@@ -8,3 +8,4 @@ def index():
#sheet.cell('r0c3',value='=r0c0+r0c1+r0c2',readonly=True)
return dict(sheet=sheet)
@@ -34,3 +34,4 @@ def beautify():
@@ -47,3 +47,4 @@ def code_feed_reader(project,mode='div'):
+1
View File
@@ -38,3 +38,4 @@ def get_content(b=None,\
return html
+1
View File
@@ -43,3 +43,4 @@ def toggle_menuclass(cssclass='pressed',menuid='headermenu'):
else:
return ''
@@ -444,3 +444,4 @@ def ccache():
@@ -71,3 +71,4 @@ def data():
LOAD('default','data.load',args='tables',ajax=True,user_signature=True)
"""
return dict(form=crud())
+2 -1
View File
@@ -11,7 +11,7 @@
if not request.env.web2py_runtime_gae:
## if NOT running on Google App Engine use SQLite or other DB
db = DAL('sqlite://storage.sqlite')
db = DAL('sqlite://storage.sqlite')
else:
## connect to Google BigTable (optional 'google:datastore://namespace')
db = DAL('google:datastore')
@@ -81,3 +81,4 @@ use_janrain(auth,filename='private/janrain.key')
## after defining tables, uncomment below to enable auditing
# auth.enable_record_versioning(db)
+2 -1
View File
@@ -33,7 +33,7 @@ def _():
# shortcuts
app = request.application
ctr = request.controller
# useful links to internal and external resources
# useful links to internal and external resources
response.menu+=[
(SPAN('web2py',_class='highlighted'),False, 'http://web2py.com', [
(T('My Sites'),False,URL('admin','default','site')),
@@ -99,3 +99,4 @@ def _():
)]
_()
+1
View File
@@ -66,3 +66,4 @@ wsgiref.handlers.CGIHandler().run(gluon.main.wsgibase)
+1
View File
@@ -56,3 +56,4 @@ fcgi.WSGIServer(application, bindAddress='/tmp/fcgi.sock').run()
+1
View File
@@ -102,3 +102,4 @@ if __name__ == '__main__':
+1
View File
@@ -53,3 +53,4 @@ if 0:
+1
View File
@@ -481,3 +481,4 @@ def create_missing_app_folders(request):
+6 -5
View File
@@ -46,13 +46,13 @@ class CacheAbstract(object):
Main function is now to provide referenced api documentation.
Use CacheInRam or CacheOnDisk instead which are derived from this class.
Attentions, Michele says:
There are signatures inside gdbm files that are used directly
by the python gdbm adapter that often are lagging behind in the
detection code in python part.
On every occasion that a gdbm store is probed by the python adapter,
On every occasion that a gdbm store is probed by the python adapter,
the probe fails, because gdbm file version is newer.
Using gdbm directly from C would work, because there is backward
compatibility, but not from python!
@@ -258,7 +258,7 @@ class CacheOnDisk(CacheAbstract):
on self.locker first. Replaces the close method of the
returned shelf instance with one that releases the lock upon
closing."""
storage = None
locker = None
locked = False
@@ -296,7 +296,7 @@ class CacheOnDisk(CacheAbstract):
self.initialized = False
self.request = request
self.folder = folder
def initialize(self):
if self.initialized: return
else: self.initialized = True
@@ -468,7 +468,7 @@ class Cache(object):
"""
allow replacing cache.ram with cache.with_prefix(cache.ram,'prefix')
it will add prefix to all the cache keys used.
"""
"""
return lambda key, f, time_expire=DEFAULT_TIME_EXPIRE, prefix=prefix:\
cache_model(prefix + key, f, time_expire)
@@ -492,3 +492,4 @@ def lazy_cache(key=None,time_expire=None,cache_model='ram'):
+1
View File
@@ -58,3 +58,4 @@ def getcfs(key, filename, filter=None):
+2 -1
View File
@@ -371,7 +371,7 @@ _base_environment_['SQLField'] = SQLField # for backward compatibility
_base_environment_['SQLFORM'] = SQLFORM
_base_environment_['SQLTABLE'] = SQLTABLE
_base_environment_['LOAD'] = LOAD
def build_environment(request, response, session, store_current=True):
"""
Build the environment dictionary into which web2py files are executed.
@@ -707,3 +707,4 @@ if __name__ == '__main__':
+1
View File
@@ -724,3 +724,4 @@ def contenttype(filename, default='text/plain'):
+1
View File
@@ -264,3 +264,4 @@ if __name__=='__main__':
+1
View File
@@ -244,3 +244,4 @@ if __name__=='__main__':
+1
View File
@@ -6,3 +6,4 @@
+1
View File
@@ -502,3 +502,4 @@ aes_Rcon = array('B',
)
+1
View File
@@ -205,3 +205,4 @@ if __name__=="__main__":
print test()
+1
View File
@@ -3911,3 +3911,4 @@ def parse(url_file_stream_or_string, etag=None, modified=None, agent=None, refer
+3 -2
View File
@@ -24,7 +24,7 @@ class MemcacheClient(object):
key,
f,
time_expire=300,
):
):
key = '%s/%s' % (self.request.application, key)
dt = time_expire
value = None
@@ -44,7 +44,7 @@ class MemcacheClient(object):
obj = self.client.get(key)
if obj:
value = obj[1] + value
self.client.set(key, (time.time(), value))
self.client.set(key, (time.time(), value))
return value
def clear(self, key = None):
@@ -65,3 +65,4 @@ class MemcacheClient(object):
def flush_all(self,*a,**b):
return self.client.delete(*a,**b)
+1
View File
@@ -91,3 +91,4 @@ def autoretry_datastore_timeouts(attempts=5.0, interval=0.1, exponent=2.0):
+1
View File
@@ -68,3 +68,4 @@ def pdf_from_html(html):
+1
View File
@@ -20,3 +20,4 @@ def button(merchant_id="123456789012345",
+1
View File
@@ -10,3 +10,4 @@ from gluon.dal import DAL, Field, Table, Query, Set, Expression, Row, Rows, driv
+1
View File
@@ -59,3 +59,4 @@ def THUMB(image, nx=120, ny=120, gae=False, name='thumb'):
return image
+1
View File
@@ -912,3 +912,4 @@ if __name__ == '__main__':
+1
View File
@@ -128,3 +128,4 @@ if __name__ == "__main__":
+1
View File
@@ -130,3 +130,4 @@ if __name__ == '__main__':
test()
+1
View File
@@ -172,3 +172,4 @@ if __name__ == '__main__':
+1
View File
@@ -10,3 +10,4 @@ from fpdf import *
# import warnings
# warnings.warn("pyfpdf package name is deprecated, please use fpdf instead")
+1
View File
@@ -965,3 +965,4 @@ if __name__ == '__main__':
+1
View File
@@ -168,3 +168,4 @@ class RedisClient(object):
+5 -5
View File
@@ -127,7 +127,7 @@ class MockTable(object):
class MockQuery(object):
"""a fake Query object that supports querying by id
and listing all keys. No other operation is supported
and listing all keys. No other operation is supported
"""
def __init__(self, field=None, db=None, prefix=None, session_expiry=False):
self.field = field
@@ -187,15 +187,15 @@ class MockQuery(object):
class RecordDeleter(object):
"""Dumb record deleter to support sessions2trash.py"""
def __init__(self, db, key, keyprefix):
self.db, self.key, self.keyprefix = db, key, keyprefix
def __call__(self):
id_idx = "%s:id_idx" % self.keyprefix
#remove from the index
self.db.srem(id_idx, self.key)
#remove the key itself
self.db.delete(self.key)
+1
View File
@@ -593,3 +593,4 @@ if __name__ == '__main__':
+1
View File
@@ -271,3 +271,4 @@ if __name__=='__main__':
+1
View File
@@ -152,3 +152,4 @@ if __name__ == "__main__":
+1
View File
@@ -117,3 +117,4 @@ def sms_email(number,provider):
+1
View File
@@ -880,3 +880,4 @@ if __name__ == '__main__':
+1
View File
@@ -67,3 +67,4 @@ if __name__=='__main__':
+1
View File
@@ -248,3 +248,4 @@ class TaskBarIcon:
+1
View File
@@ -96,3 +96,4 @@ if __name__=='__main__':
+1
View File
@@ -521,3 +521,4 @@ class mobilize(object):
+3 -2
View File
@@ -7,7 +7,7 @@ mostly for testing purposes
- customizable
- supports basic auth
- supports cookies
- supports cookies
- supports session cookies (tested with web2py sessions)
- detects broken session
- detects web2py form postbacks and handles formname and formkey
@@ -51,7 +51,7 @@ class WebClient(object):
def post(self,url,data=None,cookies=None,headers=None,auth=None):
self.url = self.app+url
# if this POST form requires a postback do it
if data and '_formname' in data and self.postbacks and \
self.history and self.history[-1][1]!=self.url:
@@ -202,3 +202,4 @@ if __name__ == '__main__':
test_web2py_registration_and_login()
+1
View File
@@ -195,3 +195,4 @@ if __name__ == "__main__":
+1
View File
@@ -188,3 +188,4 @@ class TrackImporter(object):
return file
TRACK_IMPORTER = TrackImporter()
+9 -8
View File
@@ -500,7 +500,7 @@ class ConnectionPool(object):
# ## this allows gluon to commit/rollback all dbs in this thread
def close(self,action='commit',really=True):
def close(self,action='commit',really=True):
if action:
if callable(action):
action(self)
@@ -599,7 +599,7 @@ class BaseAdapter(ConnectionPool):
support_distributed_transaction = False
uploads_in_blob = False
can_select_for_update = True
TRUE = 'T'
FALSE = 'F'
types = {
@@ -1661,7 +1661,7 @@ class BaseAdapter(ConnectionPool):
def prepare(self, key):
if self.connection: self.connection.prepare()
def commit_prepared(self, key):
if self.connection: self.connection.commit()
@@ -6572,7 +6572,7 @@ def smart_query(fields,text):
elif field._db._adapter.dbengine=='google:datastore' and \
field.type in ('list:integer', 'list:string', 'list:reference'):
if op == 'contains': new_query = field.contains(value)
else: raise RuntimeError, "Invalid operation"
else: raise RuntimeError, "Invalid operation"
else: raise RuntimeError, "Invalid operation"
if neg: new_query = ~new_query
if query is None:
@@ -6596,7 +6596,7 @@ class DAL(object):
Field('fieldname2'))
"""
def __new__(cls, uri='sqlite://dummy.db', *args, **kwargs):
def __new__(cls, uri='sqlite://dummy.db', *args, **kwargs):
if not hasattr(THREAD_LOCAL,'db_instances'):
THREAD_LOCAL.db_instances = {}
if not hasattr(THREAD_LOCAL,'db_instances_zombie'):
@@ -6746,9 +6746,9 @@ class DAL(object):
kwargs = dict(db=self,uri=uri,
pool_size=pool_size,
folder=folder,
db_codec=db_codec,
db_codec=db_codec,
credential_decoder=credential_decoder,
driver_args=driver_args or {},
driver_args=driver_args or {},
adapter_args=adapter_args or {},
do_connect=do_connect)
self._adapter = ADAPTERS[self._dbname](**kwargs)
@@ -7184,7 +7184,7 @@ def index():
def close(self):
self._adapter.close()
if self._db_uid in THREAD_LOCAL.db_instances:
if self._db_uid in THREAD_LOCAL.db_instances:
db_group = THREAD_LOCAL.db_instances[self._db_uid]
db_group.remove(self)
if not db_group:
@@ -9548,3 +9548,4 @@ DAL.Table = Table # was necessary in gluon/globals.py session.connect
if __name__ == '__main__':
import doctest
doctest.testmod()
+1
View File
@@ -193,3 +193,4 @@ gluon.main.global_settings.debugging = True
+1
View File
@@ -79,3 +79,4 @@ def decoder(buffer):
+1
View File
@@ -398,3 +398,4 @@ def abspath(*relpath, **base):
+13 -12
View File
@@ -251,11 +251,11 @@ class Response(Storage):
if item.endswith('.css'):
has_css = True
files.append(item)
if have_minify and ((self.optimize_css and has_css) or (self.optimize_js and has_js)):
# cache for 5 minutes by default
key = hashlib.md5(repr(files)).hexdigest()
cache = self.cache_includes or (current.cache.ram, 60*5)
def call_minify(files=files):
return minify.minify(files,
@@ -344,7 +344,7 @@ class Response(Storage):
os.path.getsize(filename)
except OSError:
pass
env = request.env
# Internet Explorer < 9.0 will not allow downloads over SSL unless caching is enabled
if request.is_https and isinstance(env.http_user_agent,str) and \
@@ -388,7 +388,7 @@ class Response(Storage):
headers['Content-Disposition'] = \
'attachment; filename=%s' % filename
return self.stream(stream, chunk_size=chunk_size, request=request)
def json(self, data, default=None):
return json(data, default = default or custom_json)
@@ -425,9 +425,9 @@ class Response(Storage):
dbstats = [TABLE(*[TR(PRE(row[0]),'%.2fms' % (row[1]*1000)) \
for row in i.db._timings]) \
for i in THREAD_LOCAL.instances]
dbtables = dict([(regex_nopasswd.sub('******',i.uri),
{'defined':
sorted(list(set(i.db.tables) -
dbtables = dict([(regex_nopasswd.sub('******',i.uri),
{'defined':
sorted(list(set(i.db.tables) -
set(i.db._LAZY_TABLES.keys()))) or
'[no defined tables]',
'lazy': sorted(i.db._LAZY_TABLES.keys()) or
@@ -489,7 +489,7 @@ class Session(Storage):
response.session_id_name = 'session_id_%s' % masterapp.lower()
response.session_data_name = 'session_data_%s' % masterapp.lower()
response.session_cookie_expires = cookie_expires
# Load session data from cookie
cookies = request.cookies
@@ -505,7 +505,7 @@ class Session(Storage):
session_cookie_data = cookies[response.session_data_name].value
else:
session_cookie_data = None
# if we are supposed to use cookie based session data
if cookie_key:
response.session_storage_type = 'cookie'
@@ -658,11 +658,11 @@ class Session(Storage):
name = response.session_data_name
value = secure_dumps(dict(self),response.session_cookie_key, compression_level=response.session_cookie_compression_level)
expires = response.session_cookie_expires
rcookies = response.cookies
rcookies.pop(name,None)
rcookies = response.cookies
rcookies.pop(name,None)
rcookies[name] = value
rcookies[name]['path'] = '/'
if expires:
if expires:
rcookies[name]['expires'] = expires.strftime(FMT)
return True
@@ -751,3 +751,4 @@ class Session(Storage):
del response.session_file
except:
pass
+1
View File
@@ -349,3 +349,4 @@ if __name__ == '__main__':
+2 -1
View File
@@ -2064,7 +2064,7 @@ class FORM(DIV):
message_onfailure = kwargs.get('message_onfailure',
current.T("Errors in form, please check it out."))
message_onchange = kwargs.get('message_onchange',
current.T("Form consecutive submissions not allowed. " +
current.T("Form consecutive submissions not allowed. " +
"Try re-submitting or refreshing the form page."))
next = kwargs.get('next',None)
for key in ('message_onsuccess','message_onfailure','onsuccess',
@@ -2535,3 +2535,4 @@ class MARKMIN(XmlComponent):
if __name__ == '__main__':
import doctest
doctest.testmod()
+1
View File
@@ -156,3 +156,4 @@ def redirect(location, how=303, client_side=False):
+1
View File
@@ -114,3 +114,4 @@ for module in base_modules + contributed_modules:
+17 -16
View File
@@ -166,7 +166,7 @@ def read_possible_plural_rules():
pname = modname+'.py'
nplurals = getattr(module,'nplurals', DEFAULT_NPLURALS)
get_plural_id = getattr(
module,'get_plural_id',
module,'get_plural_id',
DEFAULT_GET_PLURAL_ID)
construct_plural_form = getattr(
module,'construct_plural_form',
@@ -210,7 +210,7 @@ def read_possible_languages_aux(langdir):
nplurals, # nplurals for current language
get_plural_id, # get_plural_id() for current language
construct_plural_form) # construct_plural_form() for current language
plurals = {}
flist = oslistdir(langdir)
# scan languages directory for plural dict files:
@@ -223,7 +223,7 @@ def read_possible_languages_aux(langdir):
for fname in flist:
if regex_langfile.match(fname) or fname == 'default.py':
fname_with_path = pjoin(langdir,fname)
d = read_dict(fname_with_path)
d = read_dict(fname_with_path)
lang = fname[:-3]
langcode = d.get('!langcode!', lang if lang != 'default'
else DEFAULT_LANGUAGE)
@@ -241,7 +241,7 @@ def read_possible_languages_aux(langdir):
if deflangcode not in langs:
# create language from default.py:
langs[deflangcode] = deflang[:2]+(0,)+deflang[3:]
return langs
def read_possible_languages(appdir):
@@ -403,11 +403,11 @@ class translator(object):
notice 1: there is no need to force since, by default, T uses
http_accept_language to determine a translation file.
notice 2:
notice 2:
en and en-en are considered different languages!
notice 3:
notice 3:
if language xx-yy is not found force() probes other similar
languages using such algorithm:
languages using such algorithm:
xx-yy.py -> xx.py -> xx-yy*.py -> xx*.py
"""
@@ -489,7 +489,7 @@ class translator(object):
languages[0], (tuple, list)):
languages = languages[0]
if not languages or languages[0] is None:
# set default language from default.py/DEFAULT_LANGUAGE
# set default language from default.py/DEFAULT_LANGUAGE
pl_info = self.get_possible_languages_info('default')
if pl_info[2]==0: # langfile_mtime
# if languages/default.py is not found
@@ -505,7 +505,7 @@ class translator(object):
self.current_languages = list(languages)
self.force(self.http_accept_language)
def plural(self, word, n):
""" get plural form of word for number *n*
NOTE: *word" MUST be defined in current language
@@ -619,7 +619,7 @@ class translator(object):
self.language_file,
({},allocate_lock()))
set_plural(language)
self.accepted_language = language
self.accepted_language = language
return languages
self.accepted_language = language or self.current_languages[0]
self.language_file = self.default_language_file
@@ -676,7 +676,7 @@ class translator(object):
message = self.params_substitution(message, symbols)
return XML(message.translate(ttab_out))
def M(self, message, symbols={}, language=None,
def M(self, message, symbols={}, language=None,
lazy=None, filter=None, ftag=None):
"""
get cached translated markmin-message with inserted parametes
@@ -710,10 +710,10 @@ class translator(object):
the ## notation is ignored in multiline strings and strings that
start with ##. this is to allow markmin syntax to be translated
"""
if isinstance(message, unicode):
message = message.encode('utf8')
if isinstance(prefix, unicode):
prefix = prefix.encode('utf8')
if isinstance(message, unicode):
message = message.encode('utf8')
if isinstance(prefix, unicode):
prefix = prefix.encode('utf8')
key = prefix+message
mt = self.t.get(key, None)
if mt is not None: return mt
@@ -831,7 +831,7 @@ class translator(object):
"""
get cached translated message with inserted parameters(symbols)
"""
message = get_from_cache(self.cache, message,
message = get_from_cache(self.cache, message,
lambda: self.get_t(message))
if symbols or symbols == 0 or symbols == "":
if isinstance(symbols, dict):
@@ -905,3 +905,4 @@ def update_all_languages(application_path):
if __name__ == '__main__':
import doctest
doctest.testmod()
+7 -6
View File
@@ -235,7 +235,7 @@ def serve_controller(request, response, session):
default_headers = [
('Content-Type', contenttype('.'+request.extension)),
('Cache-Control','no-store, no-cache, must-revalidate, post-check=0, pre-check=0'),
('Expires', time.strftime('%a, %d %b %Y %H:%M:%S GMT',
('Expires', time.strftime('%a, %d %b %Y %H:%M:%S GMT',
time.gmtime())),
('Pragma', 'no-cache')]
for key,value in default_headers:
@@ -440,7 +440,7 @@ def wsgibase(environ, responder):
local_hosts = global_settings.local_hosts
client = get_client(env)
x_req_with = str(env.http_x_requested_with).lower()
request.update(
client = client,
folder = abspath('applications',app) + os.sep,
@@ -524,14 +524,14 @@ def wsgibase(environ, responder):
import gluon.debug
# activate the debugger
gluon.debug.dbg.do_debug(mainpyfile=request.folder)
serve_controller(request, response, session)
except HTTP, http_response:
if static_file:
return http_response.to(responder,env=env)
if request.body:
request.body.close()
@@ -557,9 +557,9 @@ def wsgibase(environ, responder):
# if session not in db try store session on filesystem
# this must be done after trying to commit database!
# ##################################################
session._try_store_in_cookie_or_file(request, response)
if request.cid:
if response.flash:
http_response.headers['web2py-component-flash'] = urllib2.quote(xmlescape(response.flash).replace('\n',''))
@@ -858,3 +858,4 @@ class HttpServer(object):
except:
pass
+1
View File
@@ -15,3 +15,4 @@ class MessageBoxHandler(logging.Handler):
tkMessageBox.showinfo('info1', msg)
+1
View File
@@ -33,3 +33,4 @@ regex_extend = re.compile(\
+2 -1
View File
@@ -330,7 +330,7 @@ def crondance(applications_parent, ctype='soft', startup=False, apps=None):
commands = command
# from python docs:
# You do not need shell=True to run a batch file or
# You do not need shell=True to run a batch file or
# console-based executable.
shell = False
@@ -348,3 +348,4 @@ def crondance(applications_parent, ctype='soft', startup=False, apps=None):
+3 -2
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# portalocker.py
# portalocker.py
# Cross-platform (posix/nt) API for flock-style file locking.
# Requires python 1.5.2 or better.
@@ -142,7 +142,7 @@ class LockedFile(object):
def __del__(self):
if not self.file is None:
self.close()
def read_locked(filename):
fp = LockedFile(filename, 'r')
data = fp.read()
@@ -165,3 +165,4 @@ if __name__=='__main__':
+1
View File
@@ -1718,3 +1718,4 @@ ADAPTERS['all'] = reduce(lambda a,b:a.union(b),(x for x in ADAPTERS.values()))
+2 -1
View File
@@ -100,7 +100,7 @@ class TicketStorage(Storage):
table = self._get_table(self.db, self.tablename, app)
rows = self.db(table.ticket_id == ticket_id).select()
return cPickle.loads(rows[0].ticket_data) if rows else {}
class RestrictedError(Exception):
@@ -312,3 +312,4 @@ def snapshot(info=None, context=5, code=None, environment=None):
+7 -6
View File
@@ -197,7 +197,7 @@ def url_out(request, environ, application, controller, function,
host = request.env.http_host
if not scheme or scheme is True:
scheme = request.env.get('wsgi_url_scheme', 'http').lower() \
if request else 'http'
if request else 'http'
if host:
host_port = host if not port else host.split(':',1)[0]+':%s'%port
url = '%s://%s%s' % (scheme, host_port, url)
@@ -579,7 +579,7 @@ def regex_filter_in(e):
e['REQUEST_URI'] = e['PATH_INFO'] + (query and ('?' + query) or '')
return e
def sluggify(key):
return key.lower().replace('.','_')
@@ -609,7 +609,7 @@ def regex_url_in(request, environ):
if not match:
raise HTTP(400,
routes.error_message % 'invalid request',
web2py_error='invalid path')
web2py_error='invalid path')
elif match.group('c')=='static':
application = match.group('a')
version, filename = None, match.group('z')
@@ -623,9 +623,9 @@ def regex_url_in(request, environ):
else:
# ##################################################
# parse application, controller and function
# ##################################################
request.application = match.group('a') or routes.default_application
request.controller = match.group('c') or routes.default_controller
# ##################################################
request.application = match.group('a') or routes.default_application
request.controller = match.group('c') or routes.default_controller
request.function = match.group('f') or routes.default_function
request.raw_extension = match.group('e')
request.extension = request.raw_extension or 'html'
@@ -1316,3 +1316,4 @@ def get_effective_router(appname):
if not routers or appname not in routers:
return None
return Storage(routers[appname]) # return a copy
+1
View File
@@ -1881,3 +1881,4 @@ if __name__=='__main__':

Some files were not shown because too many files have changed in this diff Show More