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