better appadmin, thanks Anthony
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.5.1-stable+timestamp.2013.06.11.08.00.05
|
Version 2.5.1-stable+timestamp.2013.06.13.15.20.01
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pgv = None
|
pgv = None
|
||||||
|
|
||||||
response.subtitle = 'Database Administration (appadmin)'
|
|
||||||
|
|
||||||
# ## critical --- make a copy of the environment
|
# ## critical --- make a copy of the environment
|
||||||
|
|
||||||
global_env = copy.copy(globals())
|
global_env = copy.copy(globals())
|
||||||
@@ -37,14 +35,26 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
if request.function == 'manage':
|
||||||
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
if not 'auth' in globals() or not request.args:
|
||||||
|
redirect(URL(request.controller, 'index'))
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
manager_action = dict(role=auth.settings.auth_manager_role,
|
||||||
|
heading=T('Manage Access Control'),
|
||||||
|
tables=[auth.settings.table_user,
|
||||||
|
auth.settings.table_group,
|
||||||
|
auth.settings.table_permission])
|
||||||
|
else:
|
||||||
|
manager_action = auth.settings.manager_actions.get(request.args(0), None)
|
||||||
|
manager_role = manager_action.get('role', None) if manager_action else None
|
||||||
|
auth.requires_membership(manager_role)(lambda: None)()
|
||||||
menu = False
|
menu = False
|
||||||
elif (request.application == 'admin' and not session.authorized) or \
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
else:
|
else:
|
||||||
|
response.subtitle = 'Database Administration (appadmin)'
|
||||||
menu = True
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
@@ -580,34 +590,40 @@ def bg_graph_model():
|
|||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
def auth_manage():
|
def manage():
|
||||||
tablename = request.args(0)
|
tables = manager_action['tables']
|
||||||
if not tablename or not tablename in auth.db.tables:
|
if isinstance(tables[0], str):
|
||||||
return dict()
|
db = manager_action.get('db', auth.db)
|
||||||
table = auth.db[tablename]
|
db = globals()[db] if isinstance(db, str) else db
|
||||||
formname = '%s_grid' % tablename
|
tables = [db[table] for table in tables]
|
||||||
if tablename == auth.settings.table_user_name:
|
if request.extension != 'load':
|
||||||
|
return dict(heading=manager_action.get('heading',
|
||||||
|
T('Manage %(action)s') % dict(action=request.args(0).replace('_', ' ').title())),
|
||||||
|
tablenames=[table._tablename for table in tables])
|
||||||
|
table = tables[request.args(1, cast=int)]
|
||||||
|
formname = '%s_grid' % table._tablename
|
||||||
|
linked_tables = orderby = None
|
||||||
|
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
auth.settings.table_group._id.readable = \
|
||||||
|
auth.settings.table_membership._id.readable = \
|
||||||
|
auth.settings.table_permission._id.readable = False
|
||||||
auth.settings.table_user._plural = T('Users')
|
auth.settings.table_user._plural = T('Users')
|
||||||
auth.settings.table_membership._plural = T('Roles')
|
auth.settings.table_group._plural = T('Roles')
|
||||||
auth.settings.table_membership._id.readable = False
|
auth.settings.table_membership._plural = T('Memberships')
|
||||||
auth.settings.table_membership.user_id.label = T('User')
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
auth.settings.table_membership.group_id.label = T('Role')
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
auth.settings.table_permission._plural = T('Permissions')
|
||||||
linked_tables=[auth.settings.table_membership_name],
|
|
||||||
maxtextlength=1000, formname=formname)
|
|
||||||
else:
|
|
||||||
table._id.readable = False
|
|
||||||
auth.settings.table_permission.group_id.label = T('Role')
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
auth.settings.table_permission.name.label = T('Permission')
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
if table == auth.settings.table_user:
|
||||||
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
linked_tables=[auth.settings.table_membership_name]
|
||||||
user_signature=True, maxtextlength=1000, formname=formname)
|
elif table == auth.settings.table_group:
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None
|
||||||
|
elif table == auth.settings.table_permission:
|
||||||
|
orderby = 'group_id'
|
||||||
|
|
||||||
def manage():
|
grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True,
|
||||||
tablename = request.args(0)
|
orderby=orderby, linked_tables=linked_tables,
|
||||||
if tablename in auth.db.tables:
|
maxtextlength=1000, formname=formname)
|
||||||
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
return grid
|
||||||
else:
|
|
||||||
return dict()
|
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
|
||||||
|
|||||||
@@ -248,37 +248,21 @@
|
|||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
{{if request.function == 'auth_manage':}}
|
{{if request.function == 'manage':}}
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
{{labels = ['Users', 'Roles', 'Permissions'] if request.args(0) == 'auth' else [name.replace('_', ' ').title() for name in tablenames]}}
|
||||||
|
<h2>{{=heading}}</h2>
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
<li{{=XML(' class="active"') if k == 0 else ''}}>
|
||||||
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
<a href="#table-{{=tablename}}" data-toggle="tab">{{=labels[k]}}</a>
|
||||||
</ul>
|
</li>
|
||||||
|
|
||||||
<div class="tab-content">
|
|
||||||
<div class="tab-pane active" id="users">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_user_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="roles">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_group_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="permissions">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_permission_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{elif request.function == 'manage':}}
|
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
|
||||||
<ul class="nav nav-tabs">
|
|
||||||
{{for k,tablename in enumerate(auth.db.tables):}}
|
|
||||||
<li><a href="#table-{{=tablename}}" data-toggle="tab">{{=tablename}}</a></li>
|
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
{{for tablename in auth.db.tables:}}
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<div class="tab-pane" id="table-{{=tablename}}">
|
<div class="tab-pane{{=XML(' active') if k == 0 else ''}}" id="table-{{=tablename}}">
|
||||||
{{=LOAD(f='manage.load', args=tablename,ajax=True)}}
|
{{=LOAD(f='manage.load', args=[request.args(0), k], ajax=True)}}
|
||||||
</div>
|
</div>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pgv = None
|
pgv = None
|
||||||
|
|
||||||
response.subtitle = 'Database Administration (appadmin)'
|
|
||||||
|
|
||||||
# ## critical --- make a copy of the environment
|
# ## critical --- make a copy of the environment
|
||||||
|
|
||||||
global_env = copy.copy(globals())
|
global_env = copy.copy(globals())
|
||||||
@@ -37,14 +35,26 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
if request.function == 'manage':
|
||||||
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
if not 'auth' in globals() or not request.args:
|
||||||
|
redirect(URL(request.controller, 'index'))
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
manager_action = dict(role=auth.settings.auth_manager_role,
|
||||||
|
heading=T('Manage Access Control'),
|
||||||
|
tables=[auth.settings.table_user,
|
||||||
|
auth.settings.table_group,
|
||||||
|
auth.settings.table_permission])
|
||||||
|
else:
|
||||||
|
manager_action = auth.settings.manager_actions.get(request.args(0), None)
|
||||||
|
manager_role = manager_action.get('role', None) if manager_action else None
|
||||||
|
auth.requires_membership(manager_role)(lambda: None)()
|
||||||
menu = False
|
menu = False
|
||||||
elif (request.application == 'admin' and not session.authorized) or \
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
else:
|
else:
|
||||||
|
response.subtitle = 'Database Administration (appadmin)'
|
||||||
menu = True
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
@@ -580,34 +590,40 @@ def bg_graph_model():
|
|||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
def auth_manage():
|
def manage():
|
||||||
tablename = request.args(0)
|
tables = manager_action['tables']
|
||||||
if not tablename or not tablename in auth.db.tables:
|
if isinstance(tables[0], str):
|
||||||
return dict()
|
db = manager_action.get('db', auth.db)
|
||||||
table = auth.db[tablename]
|
db = globals()[db] if isinstance(db, str) else db
|
||||||
formname = '%s_grid' % tablename
|
tables = [db[table] for table in tables]
|
||||||
if tablename == auth.settings.table_user_name:
|
if request.extension != 'load':
|
||||||
|
return dict(heading=manager_action.get('heading',
|
||||||
|
T('Manage %(action)s') % dict(action=request.args(0).replace('_', ' ').title())),
|
||||||
|
tablenames=[table._tablename for table in tables])
|
||||||
|
table = tables[request.args(1, cast=int)]
|
||||||
|
formname = '%s_grid' % table._tablename
|
||||||
|
linked_tables = orderby = None
|
||||||
|
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
auth.settings.table_group._id.readable = \
|
||||||
|
auth.settings.table_membership._id.readable = \
|
||||||
|
auth.settings.table_permission._id.readable = False
|
||||||
auth.settings.table_user._plural = T('Users')
|
auth.settings.table_user._plural = T('Users')
|
||||||
auth.settings.table_membership._plural = T('Roles')
|
auth.settings.table_group._plural = T('Roles')
|
||||||
auth.settings.table_membership._id.readable = False
|
auth.settings.table_membership._plural = T('Memberships')
|
||||||
auth.settings.table_membership.user_id.label = T('User')
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
auth.settings.table_membership.group_id.label = T('Role')
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
auth.settings.table_permission._plural = T('Permissions')
|
||||||
linked_tables=[auth.settings.table_membership_name],
|
|
||||||
maxtextlength=1000, formname=formname)
|
|
||||||
else:
|
|
||||||
table._id.readable = False
|
|
||||||
auth.settings.table_permission.group_id.label = T('Role')
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
auth.settings.table_permission.name.label = T('Permission')
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
if table == auth.settings.table_user:
|
||||||
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
linked_tables=[auth.settings.table_membership_name]
|
||||||
user_signature=True, maxtextlength=1000, formname=formname)
|
elif table == auth.settings.table_group:
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None
|
||||||
|
elif table == auth.settings.table_permission:
|
||||||
|
orderby = 'group_id'
|
||||||
|
|
||||||
def manage():
|
grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True,
|
||||||
tablename = request.args(0)
|
orderby=orderby, linked_tables=linked_tables,
|
||||||
if tablename in auth.db.tables:
|
maxtextlength=1000, formname=formname)
|
||||||
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
return grid
|
||||||
else:
|
|
||||||
return dict()
|
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
|
||||||
|
|||||||
@@ -248,37 +248,21 @@
|
|||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
{{if request.function == 'auth_manage':}}
|
{{if request.function == 'manage':}}
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
{{labels = ['Users', 'Roles', 'Permissions'] if request.args(0) == 'auth' else [name.replace('_', ' ').title() for name in tablenames]}}
|
||||||
|
<h2>{{=heading}}</h2>
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
<li{{=XML(' class="active"') if k == 0 else ''}}>
|
||||||
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
<a href="#table-{{=tablename}}" data-toggle="tab">{{=labels[k]}}</a>
|
||||||
</ul>
|
</li>
|
||||||
|
|
||||||
<div class="tab-content">
|
|
||||||
<div class="tab-pane active" id="users">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_user_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="roles">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_group_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="permissions">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_permission_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{elif request.function == 'manage':}}
|
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
|
||||||
<ul class="nav nav-tabs">
|
|
||||||
{{for k,tablename in enumerate(auth.db.tables):}}
|
|
||||||
<li><a href="#table-{{=tablename}}" data-toggle="tab">{{=tablename}}</a></li>
|
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
{{for tablename in auth.db.tables:}}
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<div class="tab-pane" id="table-{{=tablename}}">
|
<div class="tab-pane{{=XML(' active') if k == 0 else ''}}" id="table-{{=tablename}}">
|
||||||
{{=LOAD(f='manage.load', args=tablename,ajax=True)}}
|
{{=LOAD(f='manage.load', args=[request.args(0), k], ajax=True)}}
|
||||||
</div>
|
</div>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pgv = None
|
pgv = None
|
||||||
|
|
||||||
response.subtitle = 'Database Administration (appadmin)'
|
|
||||||
|
|
||||||
# ## critical --- make a copy of the environment
|
# ## critical --- make a copy of the environment
|
||||||
|
|
||||||
global_env = copy.copy(globals())
|
global_env = copy.copy(globals())
|
||||||
@@ -37,14 +35,26 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
if request.function == 'manage':
|
||||||
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
if not 'auth' in globals() or not request.args:
|
||||||
|
redirect(URL(request.controller, 'index'))
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
manager_action = dict(role=auth.settings.auth_manager_role,
|
||||||
|
heading=T('Manage Access Control'),
|
||||||
|
tables=[auth.settings.table_user,
|
||||||
|
auth.settings.table_group,
|
||||||
|
auth.settings.table_permission])
|
||||||
|
else:
|
||||||
|
manager_action = auth.settings.manager_actions.get(request.args(0), None)
|
||||||
|
manager_role = manager_action.get('role', None) if manager_action else None
|
||||||
|
auth.requires_membership(manager_role)(lambda: None)()
|
||||||
menu = False
|
menu = False
|
||||||
elif (request.application == 'admin' and not session.authorized) or \
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
else:
|
else:
|
||||||
|
response.subtitle = 'Database Administration (appadmin)'
|
||||||
menu = True
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
@@ -580,34 +590,40 @@ def bg_graph_model():
|
|||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
def auth_manage():
|
def manage():
|
||||||
tablename = request.args(0)
|
tables = manager_action['tables']
|
||||||
if not tablename or not tablename in auth.db.tables:
|
if isinstance(tables[0], str):
|
||||||
return dict()
|
db = manager_action.get('db', auth.db)
|
||||||
table = auth.db[tablename]
|
db = globals()[db] if isinstance(db, str) else db
|
||||||
formname = '%s_grid' % tablename
|
tables = [db[table] for table in tables]
|
||||||
if tablename == auth.settings.table_user_name:
|
if request.extension != 'load':
|
||||||
|
return dict(heading=manager_action.get('heading',
|
||||||
|
T('Manage %(action)s') % dict(action=request.args(0).replace('_', ' ').title())),
|
||||||
|
tablenames=[table._tablename for table in tables])
|
||||||
|
table = tables[request.args(1, cast=int)]
|
||||||
|
formname = '%s_grid' % table._tablename
|
||||||
|
linked_tables = orderby = None
|
||||||
|
|
||||||
|
if request.args(0) == 'auth':
|
||||||
|
auth.settings.table_group._id.readable = \
|
||||||
|
auth.settings.table_membership._id.readable = \
|
||||||
|
auth.settings.table_permission._id.readable = False
|
||||||
auth.settings.table_user._plural = T('Users')
|
auth.settings.table_user._plural = T('Users')
|
||||||
auth.settings.table_membership._plural = T('Roles')
|
auth.settings.table_group._plural = T('Roles')
|
||||||
auth.settings.table_membership._id.readable = False
|
auth.settings.table_membership._plural = T('Memberships')
|
||||||
auth.settings.table_membership.user_id.label = T('User')
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
auth.settings.table_membership.group_id.label = T('Role')
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
auth.settings.table_permission._plural = T('Permissions')
|
||||||
linked_tables=[auth.settings.table_membership_name],
|
|
||||||
maxtextlength=1000, formname=formname)
|
|
||||||
else:
|
|
||||||
table._id.readable = False
|
|
||||||
auth.settings.table_permission.group_id.label = T('Role')
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
auth.settings.table_permission.name.label = T('Permission')
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
if table == auth.settings.table_user:
|
||||||
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
linked_tables=[auth.settings.table_membership_name]
|
||||||
user_signature=True, maxtextlength=1000, formname=formname)
|
elif table == auth.settings.table_group:
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
orderby = 'role' if not request.args(3) or '.group_id' not in request.args(3) else None
|
||||||
|
elif table == auth.settings.table_permission:
|
||||||
|
orderby = 'group_id'
|
||||||
|
|
||||||
def manage():
|
grid = SQLFORM.smartgrid(table, args=request.args[:2], user_signature=True,
|
||||||
tablename = request.args(0)
|
orderby=orderby, linked_tables=linked_tables,
|
||||||
if tablename in auth.db.tables:
|
maxtextlength=1000, formname=formname)
|
||||||
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
return grid
|
||||||
else:
|
|
||||||
return dict()
|
|
||||||
return grid if request.extension=='load' else dict(grid=grid)
|
|
||||||
|
|||||||
@@ -248,37 +248,21 @@
|
|||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
{{if request.function == 'auth_manage':}}
|
{{if request.function == 'manage':}}
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
{{labels = ['Users', 'Roles', 'Permissions'] if request.args(0) == 'auth' else [name.replace('_', ' ').title() for name in tablenames]}}
|
||||||
|
<h2>{{=heading}}</h2>
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
<li{{=XML(' class="active"') if k == 0 else ''}}>
|
||||||
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
<a href="#table-{{=tablename}}" data-toggle="tab">{{=labels[k]}}</a>
|
||||||
</ul>
|
</li>
|
||||||
|
|
||||||
<div class="tab-content">
|
|
||||||
<div class="tab-pane active" id="users">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_user_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="roles">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_group_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane" id="permissions">
|
|
||||||
{{=LOAD(f='auth_manage.load', args=auth.settings.table_permission_name,ajax=True)}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{elif request.function == 'manage':}}
|
|
||||||
<h2>{{=T('Manage Access Control')}}</h2>
|
|
||||||
<ul class="nav nav-tabs">
|
|
||||||
{{for k,tablename in enumerate(auth.db.tables):}}
|
|
||||||
<li><a href="#table-{{=tablename}}" data-toggle="tab">{{=tablename}}</a></li>
|
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
{{for tablename in auth.db.tables:}}
|
{{for k, tablename in enumerate(tablenames):}}
|
||||||
<div class="tab-pane" id="table-{{=tablename}}">
|
<div class="tab-pane{{=XML(' active') if k == 0 else ''}}" id="table-{{=tablename}}">
|
||||||
{{=LOAD(f='manage.load', args=tablename,ajax=True)}}
|
{{=LOAD(f='manage.load', args=[request.args(0), k], ajax=True)}}
|
||||||
</div>
|
</div>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!-- Navbar ================================================== -->
|
<!-- Navbar ================================================== -->
|
||||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
<div class="navbar navbar-inverse">
|
||||||
<div class="flash">{{=response.flash or ''}}</div>
|
<div class="flash">{{=response.flash or ''}}</div>
|
||||||
<div class="navbar-inner">
|
<div class="navbar-inner">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ AIM class to credit card payment with authorize.net
|
|||||||
|
|
||||||
Fork of authnet code written by John Conde
|
Fork of authnet code written by John Conde
|
||||||
http://www.johnconde.net/blog/integrate-the-authorizenet-aim-api-with-python-3-2/
|
http://www.johnconde.net/blog/integrate-the-authorizenet-aim-api-with-python-3-2/
|
||||||
Unkown license, assuming public domain
|
Unknown license, assuming public domain
|
||||||
|
|
||||||
Modifed by Massimo Di Pierro
|
Modifed by Massimo Di Pierro
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ DowCommerce class to process credit card payments with DowCommerce.com
|
|||||||
|
|
||||||
Modifications to support Dow Commerce API from code originally written by John Conde
|
Modifications to support Dow Commerce API from code originally written by John Conde
|
||||||
http://www.johnconde.net/blog/integrate-the-authorizenet-aim-api-with-python-3-2/
|
http://www.johnconde.net/blog/integrate-the-authorizenet-aim-api-with-python-3-2/
|
||||||
Unkown license, assuming public domain
|
Unknown license, assuming public domain
|
||||||
|
|
||||||
Modifed by Dave Stoll dave.stoll@gmail.com
|
Modifed by Dave Stoll dave.stoll@gmail.com
|
||||||
|
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ class Table(DALStorage):
|
|||||||
field.name))
|
field.name))
|
||||||
elif not field.type in self._db._translator\
|
elif not field.type in self._db._translator\
|
||||||
or not self._db._translator[field.type]:
|
or not self._db._translator[field.type]:
|
||||||
raise SyntaxError('Field: unkown field type %s' % field.type)
|
raise SyntaxError('Field: unknown field type %s' % field.type)
|
||||||
self._tableobj = self._db.client
|
self._tableobj = self._db.client
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1007,7 +1007,7 @@ class BaseAdapter(ConnectionPool):
|
|||||||
def fix(item):
|
def fix(item):
|
||||||
k,v=item
|
k,v=item
|
||||||
if not isinstance(v,dict):
|
if not isinstance(v,dict):
|
||||||
v=dict(type='unkown',sql=v)
|
v=dict(type='unknown',sql=v)
|
||||||
return k.lower(),v
|
return k.lower(),v
|
||||||
# make sure all field names are lower case to avoid
|
# make sure all field names are lower case to avoid
|
||||||
# migrations because of case cahnge
|
# migrations because of case cahnge
|
||||||
@@ -9176,7 +9176,7 @@ class SQLCustomType(object):
|
|||||||
class FieldVirtual(object):
|
class FieldVirtual(object):
|
||||||
def __init__(self, name, f=None, ftype='string',label=None,table_name=None):
|
def __init__(self, name, f=None, ftype='string',label=None,table_name=None):
|
||||||
# for backward compatibility
|
# for backward compatibility
|
||||||
(self.name, self.f) = (name, f) if f else ('unkown', name)
|
(self.name, self.f) = (name, f) if f else ('unknown', name)
|
||||||
self.type = ftype
|
self.type = ftype
|
||||||
self.label = label or self.name.capitalize().replace('_',' ')
|
self.label = label or self.name.capitalize().replace('_',' ')
|
||||||
self.represent = lambda v,r:v
|
self.represent = lambda v,r:v
|
||||||
@@ -9194,7 +9194,7 @@ class FieldVirtual(object):
|
|||||||
class FieldMethod(object):
|
class FieldMethod(object):
|
||||||
def __init__(self, name, f=None, handler=None):
|
def __init__(self, name, f=None, handler=None):
|
||||||
# for backward compatibility
|
# for backward compatibility
|
||||||
(self.name, self.f) = (name, f) if f else ('unkown', name)
|
(self.name, self.f) = (name, f) if f else ('unknown', name)
|
||||||
self.handler = handler
|
self.handler = handler
|
||||||
|
|
||||||
def list_represent(x,r=None):
|
def list_represent(x,r=None):
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ def csv(value):
|
|||||||
def ics(events, title=None, link=None, timeshift=0, calname=True,
|
def ics(events, title=None, link=None, timeshift=0, calname=True,
|
||||||
**ignored):
|
**ignored):
|
||||||
import datetime
|
import datetime
|
||||||
title = title or '(unkown)'
|
title = title or '(unknown)'
|
||||||
if link and not callable(link):
|
if link and not callable(link):
|
||||||
link = lambda item, prefix=link: prefix.replace(
|
link = lambda item, prefix=link: prefix.replace(
|
||||||
'[id]', str(item['id']))
|
'[id]', str(item['id']))
|
||||||
|
|||||||
+2
-1
@@ -878,7 +878,8 @@ class Auth(object):
|
|||||||
alternate_requires_registration=False,
|
alternate_requires_registration=False,
|
||||||
create_user_groups="user_%(id)s",
|
create_user_groups="user_%(id)s",
|
||||||
everybody_group_id=None,
|
everybody_group_id=None,
|
||||||
manager_group_role=None,
|
manager_actions={},
|
||||||
|
auth_manager_role=None,
|
||||||
login_captcha=None,
|
login_captcha=None,
|
||||||
register_captcha=None,
|
register_captcha=None,
|
||||||
retrieve_username_captcha=None,
|
retrieve_username_captcha=None,
|
||||||
|
|||||||
Reference in New Issue
Block a user