For logged in user just do:
>>> auth.user_groups
{1: 'admin', 2: 'wiki_editor'}
On Tuesday, October 30, 2012 5:37:24 PM UTC, Francisco Barretto wrote:
>
> Got it!
>
> def myGroups():
> groups = []
> rows = db((db.auth_user.email ==
> auth.user.email)&(db.auth_membership.user_id == auth.user_id)&(
> db.auth_group.id==db.auth_membership.group_id)).select(db.auth_group.ALL)
> for row in rows:
> groups.append(row.role)
> return (groups)
>
> Works just fine: returns a list of user's group names.
>
> Thanks Richard!
>
> On Tuesday, October 30, 2012 3:19:29 PM UTC-2, Francisco Barretto wrote:
>>
>> Ok, It does return a table(). I've tried to parse it so I could access
>> the information I need (group names) without success.
>>
>> Richard, Since the name of the db column which stores the group name
>> (role) is
>> auth_group.role<https://10.1.2.116/DNSAdmin/appadmin/select/db?orderby=auth_group.role>,
>>
>> could the solution be something like this?
>>
>> groups = []
>> for row in auth.groups():
>> groups.append(row.role)
>>
>> return (groups)
>>
>> I'm getting
>> <type 'exceptions.AttributeError'> 'TR' object has no attribute
>> 'auth_group'
>>
>> I've also tried "row.auth_group.role" but I won't work either. Obviously
>> it is returning some kind of HTML table formated data. Will I have to parse
>> it manually?
>>
>> On Tuesday, October 30, 2012 2:59:07 PM UTC-2, Niphlod wrote:
>>>
>>> groups returns a TABLE(), not a list of records.
>>>
>>> On Tuesday, October 30, 2012 5:57:03 PM UTC+1, Richard wrote:
>>>>
>>>> I didn't test, but you may try this :
>>>>
>>>> for row in auth.groups():
>>>> print row
>>>>
>>>> row should contain the different column of auth_group table and you can
>>>> usually get those column like this row.name (column name in this
>>>> example).
>>>>
>>>> You could also try as_list() :
>>>>
>>>> http://web2py.com/books/default/chapter/29/06#as_dict-and-as_list
>>>>
>>>> If it doesn't work, use the query I wrote above :
>>>>
>>>> rows = query
>>>> for row in rows:
>>>> do stuff
>>>>
>>>> Richard
>>>>
>>>> On Tue, Oct 30, 2012 at 12:35 PM, Francisco Barretto <
>>>> [email protected]> wrote:
>>>>
>>>>> Ok Richard, I've got it. You are right. Without parameters it works
>>>>> but I cant manage to get a userfull list out of it. Accesint the webpage
>>>>> doesn't help either, since I need to compare memberships inside the
>>>>> controller actions.
>>>>>
>>>>> I would need a list containing all user groups but I got instead, some
>>>>> kind of raw table which I don't know how to iterate with.
>>>>>
>>>>> Can you help me go further?
>>>>>
>>>>> Thanks, mate!
>>>>>
>>>>>
>>>>> On Tuesday, October 30, 2012 2:07:40 PM UTC-2, Richard wrote:
>>>>>
>>>>>> Ok!
>>>>>>
>>>>>> I read the book.
>>>>>>
>>>>>> You should not pass the user id.
>>>>>>
>>>>>> auth.groups() and not auth.groups(auth.user.id)
>>>>>>
>>>>>> Also you can go to this URL :
>>>>>>
>>>>>> http://127.0.0.1/yourappname/**default/user/groups<http://127.0.0.1/yourappname/default/user/groups>and
>>>>>> you will get the list of group your current logged user is in.
>>>>>>
>>>>>> Richard
>>>>>>
>>>>>> On Tue, Oct 30, 2012 at 11:51 AM, Richard Vézina <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> I don't know if web2py has a given command or how to use it, but
>>>>>>> this query should give you what you the information you are searching :
>>>>>>>
>>>>>>> db((db.auth_user.email == 'USER_EMAIL')&(db.auth_**membership.user_id
>>>>>>> == db.auth_user.id)&(db.auth_**group.id <http://db.auth_group.id>
>>>>>>> ==db.auth_membership.**group_id)).select(db.auth_**group.ALL)
>>>>>>>
>>>>>>> Richard
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Oct 30, 2012 at 11:15 AM, Francisco Barretto <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Folks!
>>>>>>>>
>>>>>>>> How do I list all groups that a user belong? I've found out that
>>>>>>>> Auth has this function:
>>>>>>>>
>>>>>>>> groups(self)
>>>>>>>> displays the groups and their roles for the logged in user
>>>>>>>>
>>>>>>>> I dont manage to get it working. I've tried something like this:
>>>>>>>>
>>>>>>>> def myGroups():
>>>>>>>> return dict(auth.groups(auth.user_id)**)
>>>>>>>>
>>>>>>>> and get this error:
>>>>>>>> <type 'exceptions.TypeError'> groups() takes exactly 1 argument (2
>>>>>>>> given)
>>>>>>>>
>>>>>>>> any idea on how to do this properly? Thanks!
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
--