You're already looping over the tables when you define your functions, so 
just use the table value from the loop in your lambda function definitions. 
Not tested, but maybe something like:

def remove_filters(table):
    for field in table:
        field.filter_out = None

for t in db.tables:
    db[t]._before_insert.insert(0, lambda f, table=db[t]: remove_filters(
table))
    db[t]._before_update.insert(0, lambda s, f, table=db[t]: remove_filters(
table))

Instead, though, it might be worth figuring out why you're getting the 
errors and seeing if that can be fixed.

Anthony


On Wednesday, April 30, 2014 10:03:48 AM UTC-4, Diogo Munaro wrote:

> Hey guys! Nowadays I'm using a some filter_outs but they got update and 
> insert erros on record versioning.
>
> I'm solving update issue using before_update like this:
>
>     def remove_filter(s,field):
>         field_obj = s.query.db[str(s.query).split('.')[0][1:]][field]
>         field_obj.filter_out = ''
>
>     for t in db.tables:
>         db[t]._before_update.insert(0, lambda s, f: not [remove_filter(s, 
> field) for field in f])
>
> s.query.db is the returned db;
>
> str(s.query).split('.')[0][1:] is an ugly way to get table name
>
> field is the field_name.
>
> With update I got an ugly solution, but I got a solution. With insert I 
> can't do it because before_insert don't have a Query object and I can't get 
> table name
>
> Is there a better way to solve it and remove filter_outs before inserts 
> and updates?
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to