Web2py 2.0.2 is out

가장 큰 변화는 뭐니뭐니해도
1. DAL의 select 속도가 엄청 빨리졌다는거.
2. table이 lazy table 생성으로 db access가 실제 필요한 시점으로 늦쳐졌다는거

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


Happy Coding~:)


About rookiecj

Hi all. Today is the day.
This entry was posted in python, web2py. Bookmark the permalink.

One Response to Web2py 2.0.2 is out

  1. Kenny says:

    안녕하세요! 미국에 거주하고있는 web2py 한국 사람 유저 인데요,
    혹시 web2py 책 번역에 관심있으신가요?
    web2py웹사이트에 한국말로 번역이된 문서가 없어서, 번역할려고하는데요. 관심있으시면 메일주세요 ^^

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s