You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
db.mytable._enable_record_versioning(db) adds versioning to this table
teradata adapter, thanks Andrew Willimott
experimental Sybase Adapter
added db.table.field.avg()
Support for Google App Engine projections, thanks Christian
Field(... 'upload', default=path) now accepts a path to a local file as default value, if user does not upload a file. Relative path looks inside current application folder, thanks Marin
executesql(...,fields=,columns=) allows parsing of results in Rows, thanks Anthony
Rows.find(lambda row: bool(), limitby=(0,1))
Auth improvements
auth.enable_record_versioning(db) adds full versioning to all tables
@auth.requires_login(otherwise=URL(...))
auth supports salt and compatible with third party data, thanks Dave Stoll
CRYPT now defaults to pbkdf2(1000,20,sha1)
Built-in wiki with menu, tags, search, media, permissions. def index: return auth.wiki()
auth.settings.everybody_group_id
allow storage of uploads on any PyFileSystem (including amazon)
Form improvements
FORM.confirm('Are you sure?',{'Back':URL(...)})
SQLFORM.smartdictform(dict)
form.add_button(value,link)
SQLFORM.grid(groupby='...')
fixed security issue with SQLFORM.grid and SQLFORM.smartgrid
more export options in SQLFORM.grid and SQLFORM.smartgrid (html, xml, csv, ...)
Admin improvements
new admin pages: manage_students, bulk_regsiter, and progress reports
Scheduler Improvements (thanks to niphlod, ykessler, dhx, toomim)
web2py.py -K myapp -X starts the myapp scheduler alongside the webserver
tasks are marked EXPIRED (if stop_time passed)
functions with no result don't end up in scheduler_run
more options: web2py.py -E -b -L
scheduler can now handle 10k tasks with 20 concurrent workers and with no issues
new params:
tasks can be found in the environment (no need to define the tasks parameter)
max_empty_runs kills the workers automatically if no new tasks are found in queue (nice for "spikes" of processing power)
discard_results to completely discard the results (if you don't need the output of the task)
utc_time enables datetime calculations with UTC time
scheduler_task changes:
task_name is no longer required (filled automatically with function_name if found empty)
uuid makes easy to coordinate scheduler_task maintenance (filled automatically if not provided)
stop_time has no default (previously was today+1)
retry_failed to requeue automatically failed tasks
sync_output refreshes automatically the output (nice to report percentages)
workers can be:
DISABLED (put to sleep and do nothing if not sending the heartbeat every 30 seconds)
TERMINATE (complete the current task and then die)
KILL (kill ASAP)
Other Improvements
gluon/contrib/webclient.py makes it easy to create functional tests for app
DIV(..).elements(...replace=...), thanks Anthony
new layout based on Twitter Bootstrap
New generic views: generic.ics (Mac Mail Calendar) and generic.map (Google Maps)
request.args(0,default=0, cast=int, otherwise=URL(...)), thanks Anthony
redirect(...,type='auto') will be handled properly in ajax responses
routes in can redirect outside with routes_in=[('/path','303->http://..')]
better memcache support
improved spreadsheet, thanks Alan
new internationalization engine, thanks Vladyslav
pluralization engine, thanks Vladyslav
new markmin with support for nested lists, , , autolinks, thanks Vladyslav
new syntax: {{=BR()*5}}
gluon.cache.lazy_cache decorator allows caching functions in modules
.coffee and .less support in response.files, thanks Sam Sheftel
ldap certificate support
pg8000 postgresql driver support (experimental)
@cache('%(name)s%(args)s%(vars)s',5) and cache.autokey
added tox.ini, thanks Marc
web2py.py --run_system_tests, thanks Marc Abramowitz
html.py (and web2py helpers) can be used without web2py dependencies