from gluon import *
class UserRole():
@staticmethod
def permissions():
T,settings = current.T,current.settings
return [
('club_page', T('View club information page'), '', 0),
('lsc_page', T('View LSC information page'), '', 0),
('support_page', T('View %(title) support page', settings), '', 0),
('admin_page', T('View %(title) admin page', settings), '', 0),
('root_page', T('View special root-access page'), '', 0),
('impersonate', T('Impersonate other users'), 'auth_user', 0),
]
@staticmethod
def roles():
T,settings = current.T,current.settings
return [
('root', T('Superuser access to all'), ('club_page','lsc_page','support_page','admin_page','root_page','impersonate')),
('ss_admin', T('%(title) administration', settings), ('club_page','lsc_page','support_page','admin_page','impersonate')),
('ss_support', T('%(title) support', settings), ('club_page','lsc_page','support_page','impersonate')),
('lsc_admin', T('LSC staff'), ('lsc_page',)),
('club_admin', T('Club staff'), ('club_page',)),
('coach', T('Swim coach '), ('club_page',)),
('user', T('Parent or swimmer'), tuple()),
('vendor', T('Vendor or advertiser'), tuple()),
('impersonate',T('Impersonate other users'), ('impersonate',))
]
@classmethod
def define_roles(cls):
auth = current.auth
perms = {nam:(nam,obj,col) for nam,dsc,obj,col in cls.permissions()}
for ea in cls.roles():
grp,descr,plist = ea
gid = auth.add_group(grp, descr)
for p in plist:
auth.add_permission(gid,*(perms[p]))