Copy extract_pgsql_models as extract_oracle_models
extract_oracle_models.py script, for legacy Oracle 11g databases
fixed issue with scheduler and cache.disk introduced in 2.8.1
R-2.8.2
Enhance encoding header of languages/*.py
fixed conflict
removed conflict from languages, thanks Niphlod
Update buttons.py

<type 'exceptions.AttributeError'> 'dict' object has no attribute 'is_mobile'"
Update access.py

<type 'exceptions.AttributeError'> 'dict' object has no attribute 'is_mobile'"
Fix references with GAE in NDB mode

For reference types the IntegerProperty class (no matter if NDB or
not) constructor is passed the referenced table name as the first
parameter.

For non-NDB, the first parameter is 'verbose_name'. For NDB, the first
parameter is 'name'.

In NDB mode this causes the property to have a wrong identity and
therefore references fail to work properly.

The verbose_name set in non-NDB mode is relatively harmless in
comparison, but seems to be wrong as well as it does not really make
sense.

Do not pass referenced table name to the IntegerProperty constructor in
either case.
Merge pull request #310 from pyner/patch-1

Update buttons.py
Merge branch 'master' of github.com:web2py/web2py
Merge pull request #311 from pyner/patch-2

Update access.py
Merge branch 'master' of github.com:web2py/web2py
Merge pull request #312 from anssih/fix/ndb-refs

Fix references with GAE in NDB mode
Merge branch 'master' of github.com:web2py/web2py
fixed issue 1795:MongoDB: DAL instantiation dict definition error, thanks Alan
Merge pull request #314 from oscarfonts/oracle-extract

extract_oracle_models.py script
fixed request.user_agent().get('is_mobile', False), thanks Jonathan
Fix list types in GAE NDB after entity write

As per
http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=208
("List items from repeated StringProperty get mutated to _BaseValue on
put") it seems to be expected behavior that lists in NDB models get
mutated to _BaseValue lists after .put() is called.

In web2py this corresponds to:
------------
db.define_table('listintegertest',
	Field('dummy', 'boolean'),
	Field('integerlist', 'list:integer'),
	Field('stringlist', 'list:string'),
)

iidee = db.listintegertest.insert(
	integerlist=[1,2,3,4],
	stringlist=["1","2","3","4"]
)
row = db.listintegertest(iidee)
db.listintegertest[row.id] = dict(dummy=True)

print "type is %s" % (type(row.integerlist[0]))
print "type is %s" % (type(row.stringlist[0]))
------------

The output of the above is currently:
type is <class 'google.appengine.ext.ndb.model._BaseValue'>
type is <class 'google.appengine.ext.ndb.model._BaseValue'>
while this is expected:
type is <type 'int'>
type is <type 'unicode'>

The workaround is to copy the list from the NDB model instead of
relying on it not being changed afterwards.

list:reference is not affected since parse_list_references() already
recreates the list in NoSQLAdapter case.