These features are now documented in the html book. Working on more.
[x] Support for DAL(lazy_tables=True) and db.define_table(on_define=lambda
table:), thanks Jonathan
[x] db(...).select(cacheable=True) make select 30% faster
[x] db(...).select(cache=(cache.ram,3600)) now caches parsed data 100x
faster
[x] db(...).count(cache=(cache.ram,3600)) now supported
[x] MongoDB support in DAL (experimental), thanks Mark Breedveld
[x] db.mytable._before_insert, _after_insert, _before_update,
_after_update, _before_delete. _after_delete (list of callbacks)
[x] DAL BIGINT support and DAL(...,bigint_id=True)
[x] IS_IN_DB(..., distinct=True)
[x] new syntax: db.mytable.insert(myuploadfield=open(....)), thank you
Iceberg
[x] db(...).select(db.mytable.myfield.count(distinct=True))
[x] teradata adapter, thanks Andrew Willimott
[x] experimental Sybase Adapter
[x] added db.table.field.avg()
[x] 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
[x] executesql(...,fields=,columns=) allows parsing of results in Rows,
thanks Anthony
[x] @auth.requires_login(otherwise=URL(...))
[x] CRYPT now defaults to pbkdf2(1000,20,sha1)
[x] allow storage of uploads on any PyFileSystem (including amazon)
[x] more export options in SQLFORM.grid and SQLFORM.smartgrid (html, xml,
csv, ...)
[x] new layout based on Twitter Bootstrap
[x] New generic views: generic.ics (Mac Mail Calendar) and generic.map
(Google Maps)
[x] request.args(0,default=0, cast=int, otherwise=URL(...)), thanks Anthony
[x] redirect(...,type='auto') will be handled properly in ajax responses
[x] routes in can redirect outside with
routes_in=[('/path','303->http://..')]
[x] .coffee and .less support in response.files, thanks Sam Sheftel
[x] ldap certificate support
[x] pg8000 postgresql driver support (experimental)
[x] db.table.field.like(...,case_sensitive=False) (thanks Floyd)
[x] db.table.field.regexp(...) for sqlite and postgres
[ ] db(...,ignore_common_filters=True)
[x] db(db.dog_id.belongs(db.dogs.owner=='james')).select()
[ ] db(...).select().group_by_value(db.table.field) (thanks Yair)
[x] db = DAL('imap://user:password@server:port') support (thanks Alan Etkin)
[x] db = DAL('teradata://DSN=dsn;UID=user;PWD=pass; DATABASE=database')
(thanks Adrew Willmott)
[x] db = DAL('mongodb://127.0.0.1:5984/db') (experimental, thanks Mark
Breedveld)
[x] db = DAL('cubrid') (experimental)
[x] db = DAL('postgres:pg8000:...') and DAL('postgres:psycopg2:...')
[x] pg8000 now ships with web2py (thanks Mariano)
[x] reponse.delimiters = ('\\[','\\]') (thanks Denes)
[x] conditional menu items (reponse.menu=[(title,bool,link,[],condition)]
I could use some help documenting these features
[ ] geodal and spatialite, thanks Denes and Fran (experimental)
[ ] Support for Google App Engine projections, thanks Christian
[ ] Scheduler Improvements (thanks to niphlod, ykessler, dhx, toomim)
[ ] DIV(..).elements(...replace=...), thanks Anthony
[ ] new fpdf, thanks Mariano
[ ] included web-based debugger (experimental, thanks Mariano)
[ ] pluralization system (Vladyslav)
[ ] T.M helper (Vladyslav)
Eventually some of the new features require a loger discussion in a
blog-like fashion than just a mention and a short example in the book.
>
>
--