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!
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>
>>>>
>>>>
>>>>
>>>
>>>
--