Massimo, web2py Japan finished the tranlation for ver 3.0 at the following site. https://sites.google.com/site/web2pyjapan/book/01
Editing to (ja) is disabled now and we're kind of waiting. Now, I'm confused how we proceed it. What the best way to do the translation work ? 1. Wait for the 4th edition (Everything on your list is [x]) 2. Wait for it becomes editable 3. Then, compare the difference between 3rd and 4th manually and translate it from scratch ?? or we just keep our website as official Japanese one and create ver4.0 later time. On Sep 28, 8:54 am, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > I have updated the online book, the content, not the app, with my most > recent edits. > Not everything is documented yet but lot more stuff is. The book is > about 10% bigger already. > When done should be 20-30% bigger than the 3rd edition. > > Here is a list of new features that are documented in 3.1 but not in > 3.0 [x] and features that are not yet documented [ ]: > > [x] LICENSE CHANGE FROM GPLv2 to LGPLv3 > [x] new URL syntax > [x] URL(...,scheme=,host=,port=) > [x] URL(...,user_signature=True), LOAD(...,user_signature=True) > [x] new T behavior > [x] db(db.table) equivalent to db(db.table.id>0) > [x] IS_DECIMAL_IN_RANGE and IS_FLOAT_IN_RANGE support dot="," (dot="." > is default) > [x] on_failed_authorization can be a function > [x] SQLFORM.process() > [x] SQLFORM.accepts(detect_record_change).record_changed > [x] session.connect(separate=True) to handle many session files > [x] support for count(distinct=...) > [x] IS_MATCH(...,strict=True) > [x] No more Auth(globals(),db), just Auth(db). Same for Crud and > Service. > [x] efficient db(...).isempty() > [x] "from gluon import *" > [x] from mymodule import * > [x] request.is_local > [x] request.is_https > [x] login_methods/loginza.py > [x] DAL(...,migrate_enabled=False) to disable all migrations > [x] DAL(...,fake_migrate_all=True) to rebuild all corrupted metadata > [x] messages in validators have default internationalization > [x] web2py.py -J for running cron > [x] bpython shell support, thanks Arun > [x] response.toolbar() > [x] db._timings contains database query timing info > [x] new represent syntax > [x] COL and COLGROUP helpers > [x] auth.settings.login_after_registration=True > [x] SQLFORM(...,separator=': ') now customizable > [x] combined expressions print db.data.body.len().sum() > [x] request.utcnow > [x] web2py_ajax.html is more modular, thanks Anthony > [x] current > [x] dal expression.coalesce(*options) > [x] response.include_meta() and response.include_files() > [x] dal auto-reconnect on time-out connections > [x] DAL(...,adapter_arg={}) allows support for alternate drivers > [x] new simpler API gluon.contrib.AuthorizeNet.procss(...) > [x] upgraded to anytime > [x] new alterante syntax for inner joins: db(...).select(join=...) > [x] new syntax rows[i]('tablename.fieldname') > [x] new DAL (complete rewrite of the web2py DAL is more modular) > [x] new query syntax field.contains(list,all=True or False) > [x] validate_and_update, thanks Bruno > [x] web2py HTTP responses now set: "X-Powered-By: web2py", thanks > Bruno > [x] auth.settings.extra_fields['auth_user'].append(Field('country')) > [x] A(...,callback=URL(...),larget='id') does Ajax > [x] support for A(name,callback=url,target='id',delete='tr') > [x] DAL 'request_tenant' fields are special, the altomatically filer > all records based on their default value. > [x] db._common_fields.append(Field('owner')) allows to add fields to > ALL tables > [x] CAS with v2 support > [x] all applications can delegate to login to external provider > Auth(...,cas_provider='http://.../other_app/default/user/cas') > [x] isapiwsgihandler.py > [x] setup-web2py-nginx-uwsgi-ubuntu.sh > [x] DAL(..,auto_import=True) automatically imports tables from > metadata without need to db.define_table(...)s. > [x] field.represent = lambda value,record: .... (record is optional) > [x] gluon/contrib/redis_cache.py > [x] gluon/contrib/simplejsonrpc.py > [x] expire_sessions.py respects expiration time, thanks iceberg > [x] auth.settings.cas_actions > [~] auth.signature (experimental) -> needs more in auth > [~] generic views -> may need more info > > ## admin > [ ] admin allow ``DEMO_MODE=True`` and ``FILTER_APPS=['welcome']`` > [ ] new admin layout (thanks Branko Vukelic) > [ ] new admin wizard > [ ] wizard can download plugins > [ ] better mercual admin allows list of files, versions and retrieve > [ ] admin has MULTI_USER_MODE (admin/models/0.py) > > ## welcome and examples > [ ] new Welcome app (thanks Martin Mulone) > [ ] new layout for examples, thanks Bruno and Martin > [ ] cleaner/simpler welcome/models/db.py and welcome layout.html > [ ] moderniz 1.17 > [ ] experimental REST API > > ## table and grids > > [ ] SQLTABLE? > [ ] SQLTABLE(...,headers='labels') thanks Bruno > [ ] new SQLFORM.grid and SQLFORM.smartgrid > [ ] support for natural language queries (english only) > [ ] support for computed columns and additional links in SQLFORM.grid > > ## other > [ ] new pip installer (Chris Steel) > [ ] new app level logging with logging.conf (Jonathan) > [ ] Polymmodel support on GAE > [ ] pyfpdf (Mariano) > [ ] auth.impersonate > [ ] conditional models > [ ] DAL now allows circular table definitions > [ ] scripts/access.wsgi and apache+mod_wsgi > [ ] scripts/make_min_web2py.py > [ ] new cpdb.py, thanks Mart > [ ] request.user_agent(), thanks Ross > [ ] x509 support (needs rocket upgrade, thanks Michele) > [ ] detection of mobile devices and @mobilize helper > > ## experimental features > [ ] experimental gluon/scheduler.py (experimental) > [ ] db.table.field=Field.Lazy(...) (experimental) > [ ] web2py comet via gluon/contrib/comet_messaging.py (html5 > websockets) > [ ] experimental cubrid database support