web2py 2.0.7 is not now. Fixed a number of recent bugs and backward compatibility issues. It also includes additional speed improvements when compared to 2.0.2.
Massimo On Wednesday, 29 August 2012 22:41:34 UTC-5, Massimo Di Pierro wrote: > > After 5 months. It is done. This is the most waited and the most > feature-packed release. > > I am sure we'll find some corners that need to be ironed but it is > considerably better than 1.99.7. It adds lot of new features and improves > many existing ones: > > - 57,000 new lines of code and closed 279 issues since 1.99.7. > - Retrieving data from DB should be faster, in particular > select(cacheable=True) > - Has a new scheduler, a built-in wiki, new language and pluralization > system, better markmin with oembed support and better scaffolding app, > increased security. > - Lots of experimental features including GIS support, mongodb support, > built-in auth.wiki(), and more. > > Should be 100% backward compatible. If you run into any issue let us know > ASAP. > > I personally want to thank the major contributors to this release (in > alphabetic order) > Alan, Andrew, Anthony, Bruno, Christian, Dave, Dominic, Iceberg, Jonathan, > Marc, Mariano, Marin, Martin, Mark, Michael, Michele, Niphlod, Patrick, > Vladyslav, > They spend many nights testing, coding, debugging at a very fast pace. > > Many many people have contributed. > > If your contribution has not been properly acknowledged please let us know > ASAP. It is probably an oversight. > > > Massimo > > > Detailed changelog > =============== > > ## 2.00.2 > > ### DAL Improvements > > - Support for DAL(lazy_tables=True) and db.define_table(on_define=lambda > table:), thanks Jonathan > - db(...).select(cacheable=True) make select 30% faster > - db(...).select(cache=(cache.ram,3600)) now caches parsed data 100x faster > - db(...).count(cache=(cache.ram,3600)) now supported > - MongoDB support in DAL (experimental), thanks Mark Breedveld > - geodal and spatialite, thanks Denes and Fran (experimental) > - db.mytable._before_insert, _after_insert, _before_update, _after_update, > _before_delete. _after_delete (list of callbacks) > - db(...).update_naive(...) same as update but ignores > table._before_update and table._after_update > - DAL BIGINT support and DAL(...,bigint_id=True) > - IS_IN_DB(..., distinct=True) > - new syntax: db.mytable.insert(myuploadfield=open(....)), thank you > Iceberg > - db(...).select(db.mytable.myfield.count(distinct=True)) > - db(db.a)._update(name=db(db.b.a==db.a.id).nested_select(db.b.id)) > - db.mytable.myfield.filter_in, filter_out > - 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 > > ### 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 > - increased security in admin against CSRF > - experimental Git integration > - experimental OpenShift deployment > - multi-language pluralization engine > - ace text web editor in admin > - Ukrainian translations, thanks Vladyslav Kozlovskyy > - Romanian translation for welcome, thanks ionel > - support for mercurial 2.6, thanks Vlad > > ### 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, <i>, <em>, 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 > - new fpdf, thanks Mariano > --