If you use postgres this SQL could help if you just want something really
quick :

-- View: v_permission_summary

-- DROP VIEW v_permission_summary;

CREATE OR REPLACE VIEW v_permission_summary AS
 SELECT auth_permission.id AS permission_summary_id,
(auth_user.first_name::text || ' '::text) || auth_user.last_name::text AS
user_name, auth_user.initials, auth_group.role, auth_permission.name,
auth_permission.table_name
   FROM auth_permission
   JOIN auth_group ON auth_group.id = auth_permission.group_id
   JOIN auth_membership ON auth_membership.group_id = auth_group.id
   JOIN auth_user ON auth_user.id = auth_membership.user_id
  ORDER BY (auth_user.first_name::text || ' '::text) ||
auth_user.last_name::text, auth_group.role, auth_permission.name,
auth_permission.table_name;

ALTER TABLE v_permission_summary OWNER TO richard;

Remove the initials field, since you probably dont have it in your
auth_user...

I use this view for which I define a model, that offcorse can't be update...

Richard

On Thu, Apr 19, 2012 at 5:06 PM, Jim Steil <[email protected]> wrote:

> Hi
>
> I'm looking for the most concise syntax to get a list of users that have a
> a certain permission.
>
> Here is what I have:
>
>    groups = db((db.auth_permission.name=='**load')&(db.auth_permission.**
> table_name=='railLoad'))._**select(db.auth_permission.**group_id)
>    userids = db(db.auth_membership.group_**id.belongs(groups))._select(**
> db.auth_membership.user_id)
>    userQuery = db.auth_user.id.belongs(**userids)
>
>    db.railLoad.loadedById.**requires = IS_IN_DB(db(userQuery), '
> auth_user.id',
>                                               '%(lastFirst)s',
>                                               zero='...choose one...')
>
> What I'm doing is filtering a dropdown.  Want to limit the selections to
> just the people with a specific permission.  This way works, but seems like
> too much code for something in web2py.
>
>    -Jim
>
>

Reply via email to