#!/usr/bin/env python

# export PYTHONPATH=.../web2py

from gluon import DAL, Field

def def_tables(db):

    p2 = db.define_table('p2',
            Field('name', 'string'),
            Field('is_active', 'boolean', default=True),
            common_filter = lambda q: db.p2.is_active==True)

def get_db():
    return DAL('sqlite://storage.sqlite')

def get_db_with_schema():
    db = get_db()
    def_tables(db)
    return db

def db_ops(db):
    db.p2.truncate()

    db.p2.insert(name='Alice')
    db.p2.insert(name='Bob')
    db.commit()

    print 'before deactivating Alice'
    print db(db.p2.name=='Alice').update(is_active=False)
    print 'after deactivating Alice'
    db.commit()

def test():
    db = get_db_with_schema()
    db_ops(db)
    print db.p2._common_filter
    print 1, [r.name for r in db().select(db.p2.name)]
    print 2, [r.name for r in 
db(ignore_common_filters=False).select(db.p2.name)]
    print 3, [r.name for r in 
db(ignore_common_filters=True).select(db.p2.name)]
    print 4, [r.name for r in db(db.p2.is_active==True).select(db.p2.name)]

if __name__ == "__main__":
    test()

Ran against trunk 1b0e08.
Inspecting DB, Alice has been successfully updated, is_active set to F.
I expect to see ['Bob'] in print out 1, 2, and 4. But I'm seeing

before deactivating Alice
1
after deactivating Alice
<function <lambda> at 0x315a500>
1 ['Alice', 'Bob']
2 ['Alice', 'Bob']
3 ['Alice', 'Bob']
4 ['Bob']

Did I miss anything, or shall I file a bug?

Thanks,

-Brian

-- 



Reply via email to