You mean that this routine makes your administrators register users so
their instances. How this works can explain?



       Ovidio Marinho Falcao Neto
                Web Developer
             [email protected]
          [email protected]
                 ITJP - itjp.net.br
               83   8826 9088 - Oi
               83   9334 0266 - Claro
                        Brasil




2012/1/17 howesc <[email protected]>

> i do this for admins of one of my sites:  (note that i have customizations
> to my auth_user table so this is not a drop-in method for your site).
>
> @auth.requires_membership('admin')
> def auth_user():
>     users_form=None
>     retval = dict(aahome=A("Forms Home", _href=URL(r=request, f='index')))
>     role_values = []
>     #remove bio requirements from auth pane
>     db.auth_user.bio.requires=None
>
>     table = db.auth_user
>
>     if request.args and request.args[0]:
>         selected_membership = db(db.auth_membership.user_id ==
> request.args[0]).select(db.auth_membership.group_id)
>         #build the current roles list, before the update
>         query = None
>         for r in selected_membership:
>             if query == None:
>                 query = db(db.auth_group.id ==
> r.group_id).select(orderby=db.auth_group.role)
>             else:
>                 query = query | db(db.auth_group.id ==
> r.group_id).select(orderby=db.auth_group.role)
>
>         #@TODO: remove user specific roles from query
>         roles = query
>
>         retval['all roles for %s' % request.args[0]] =
> SQLTABLE(roles,linkto,orderby=True,_class='sortable')
>         for role in roles:
>             role_values.append(role.id)
>
>         #check the form submit
>         users_form = SQLFORM(table, request.args[0])
>         if users_form.accepts(request.vars, session,
> formname='userupdate'):
>             for role in request.vars.roles:
>                 # currently trusts that only valid role id's will be
> submitted
>                 if not auth.has_membership(role, users_form.vars.id):
>                     auth.add_membership(role, users_form.vars.id)
>             for role in roles:
>                 #delete roles that have been removed
>                 if str(role.id) not in request.vars.roles:
>                     auth.del_membership(role.id,
>                                         users_form.vars.id)
>
>             redirect(URL(r=request,f='auth_user', args=request.args))
>
>
>         #add roles multi-select to the form
>         rows = db(db.auth_group.id > 0).select(db.auth_group.id,
> db.auth_group.role, orderby=db.auth_group.role)
>
>         import logging
>         logging.info(rows)
>         logging.info(role_values)
>         opts = [OPTION(r['role'], _value=r['id']) for r in rows]
>
>         users_form.components[0].insert(-1,
>                               TR(TD('Roles:'),
>                                  TD(SELECT(opts, _name="roles",
>                                            #@TODO: add better requires if
> we can
>                                            # make it work with lists
>                                            requires=IS_NOT_EMPTY(),
>                                            _multiple=True,
>                                            value=role_values))))
>
>     else:
>         users_form = SQLFORM(table)
>         if users_form.accepts(request.vars, session,
> formname='userupdate'):
>             #create role
>             auth.add_membership(auth.add_group('user_%d' %
> users_form.vars.id,'user_%d' % users_form.vars.id), users_form.vars.id)
> ## a group for this user
>
>
>     #get list of users to display
>     orderby=request.vars.orderby
>     if orderby == None:
>         orderby=db.auth_user.id
>     rows = db( db.auth_user.id > 0
>               ).select(db.auth_user.id,
>                        db.auth_user.first_name,
>                        db.auth_user.last_name,
>                        db.auth_user.email,
>                        db.auth_user.registration_key)
>
>     headers = {'auth_user.id':T("ID"),
>                'auth_user.first_name':T("First Name"),
>                'auth_user.last_name':T("Last Name"),
>                'auth_user.email':T("Email"),
>                'auth_user.registration_key':T("Registration Key")}
>     tbl = SQLTABLE(rows,linkto,orderby=True,_class='sortable',
> truncate=128,
>                    headers=headers)
>
>     retval['aform'] = users_form
>     retval['users'] = tbl
>
>     return retval
>
>

Reply via email to