I would prefer use "sql join on" syntax, but this way it finally works as
expected :

role1_test_set = db((db.auth_group.role=='role1_test') &
(db.auth_user.id==db.auth_membership.user_id)
& (db.auth_membership.group_id==db.auth_group.id))

db.test_test1.role.requires=\
    IS_EMPTY_OR(IS_IN_DB(role1_test_set,'auth_user.id','%(first_name)s
%(last_name)s (%(initials)s)',multiple=True))

Richard

On Tue, Aug 23, 2011 at 2:44 PM, Richard <ml.richard.vez...@gmail.com>wrote:

> Hello,
>
> I am trying to make proper set to be use as a IS_IN_DB, but for
> building the set I need to join on 2 tables... IS_IN_DB() doesn't
> seems to like my set...
>
> Here my query that works and that I try to pass as a set... I know
> that it is not a set but a select... But how to make a left join in a
> set?
>
> role1_set =
> db(db.auth_group.role=='role1_test').select(db.auth_user.ALL,
>
> left=[db.auth_membership.on(db.auth_user.id==db.auth_membership.user_id),
>
> db.auth_group.on(db.auth_membership.group_id==db.auth_group.id)])
>
> Thanks.
>
> Richard
>
>

Reply via email to