user/manage, thanks Anthony

This commit is contained in:
Massimo
2013-05-31 11:25:56 -05:00
parent 0850cadfdc
commit 3ce3171dff
4 changed files with 60 additions and 3 deletions
+36 -1
View File
@@ -878,6 +878,7 @@ class Auth(object):
alternate_requires_registration=False,
create_user_groups="user_%(id)s",
everybody_group_id=None,
manager_group_id=None,
login_captcha=None,
register_captcha=None,
retrieve_username_captcha=None,
@@ -1278,7 +1279,7 @@ class Auth(object):
'retrieve_username', 'retrieve_password',
'reset_password', 'request_reset_password',
'change_password', 'profile', 'groups',
'impersonate', 'not_authorized'):
'impersonate', 'not_authorized','manage'):
if len(request.args) >= 2 and args[0] == 'impersonate':
return getattr(self, args[0])(request.args[1])
else:
@@ -2935,6 +2936,40 @@ class Auth(object):
return SQLFORM.factory(Field('user_id', 'integer'))
return SQLFORM(table_user, user.id, readonly=True)
def manage(self):
T = current.T
request = current.request
db = self.db
tablename = request.args(1)
if not self.has_membership(self.settings.manager_group_id):
# not URL.verify(request, user_signature=True, hash_vars=False):
raise HTTP(403)
if not tablename or not tablename in db.tables:
return ''
table = db[tablename]
formname = '%s_grid' % tablename
if tablename == self.settings.table_user_name:
self.settings.table_user._plural = T('Users')
self.settings.table_membership._plural = T('Roles')
self.settings.table_membership._id.readable = False
self.settings.table_membership.user_id.label = T('User')
self.settings.table_membership.group_id.label = T('Role')
grid = SQLFORM.smartgrid(
table, args=request.args[:2],
user_signature=True,
linked_tables=[self.settings.table_membership_name],
maxtextlength=1000, formname=formname)
else:
table._id.readable = False
self.settings.table_permission.group_id.label = T('Role')
self.settings.table_permission.name.label = T('Permission')
orderby = 'role' if tablename == self.settings.table_group_name \
else 'group_id'
grid = SQLFORM.grid(
table, args=request.args[:2], orderby=table[orderby],
user_signature=True, maxtextlength=1000, formname=formname)
return grid
def update_groups(self):
if not self.user:
return