这是一个简单的 web2py 管理插件。
它大量使用 web2py SQLFORM.smartgrid 提供的功能,具有广泛的搜索、操作、历史记录、自定义导航链接、分页和各种自定义功能。
它非常重视安全性,并使用组和权限来进行细粒度的访问控制。
您可以在这里找到安装过程的截屏视频。
注意:安装变得更加容易,安装后第一个登录的用户会自动放入 w2a_root,因此只需安装插件并访问 /yourapp/web2admin。
或者
主分支将始终包含最新的稳定版本(开发将在另一个分支上完成)。
只需使用任何安装过程并覆盖 web2py 应用程序中的插件内容即可。
安装插件;)
如果用户位于 w2a_root 组中,则它拥有完整的权限,包括添加权限或更改其他用户的组。
如果用户位于 w2a_manager 组中,则它拥有除 auth 表之外的所有表的所有权限(其他用户没有更改权限)。
第一个执行 web2admin 代码的登录用户将自动置于 w2a_root 组中。
为特定用户授予特定表的细粒度权限:
访问 http://localhost:8000/yourapp/web2admin 或 http://localhost:8000/yourapp/plugin_web2admin
将以下配置行粘贴到模型文件(例如 db.py)中以更改 web2admin 行为:
更改管理应用程序的徽标(品牌)plugins.web2admin.logo = 'SuperApp'
plugins.web2admin.logo = IMG(_src=URL('static', 'images/google-buzz.png')) + ' SupperApp'
配置每页的项目数:
plugins.web2admin.items_per_page = 5 (default 20)
在侧边栏中添加额外的链接:
plugins.web2admin.custom_sidebar_title = "My Links"
plugins.web2admin.custom_sidebar_links = [
A('External link', _href='http://www.youhe.ro', _target='_blank'),
A('Back to homepage', _href=URL('default', 'index', args=0)),
]
plugins.web2admin.headers 是一个字典,它将 'tablename.fieldname' 映射到相应的标题标签,例如:
plugins.web2admin.headers = {'student.last_name': T('Surname')}
plugins.web2admin.orderby 是一个字典,用于设置表行的默认排序:
plugins.web2admin.orderby = {'student': db.student.last_name}
plugins.web2admin.groupby 是一个字典,用于设置表行的分组。您可以对指定字段具有相同值的记录进行分组(这是后端特定的,不在 Google NoSQL 上):
plugins.web2admin.groupby = {'student': db.student.last_name}
plugins.web2admin.maxtextlength 设置网格视图中每个字段值显示的文本的最大长度(默认为 20)。可以使用plugins.web2admin.maxtextlengths(“tablename.fieldname”:length 的字典)覆盖每个字段的该值。如果必须截断文本,则从指定的 length.fiel 中减去额外的 len('...') = 3
plugins.web2admin.maxtextlength ={'student': 10}
plugins.web2admin.maxtextlengths ={'test.name': 5}
plugins.web2admin.field_id 是一个字典,指定要用作 ID 的表字段,例如:
plugins.web2admin.field_id = {'student', db.stuident.id}
plugins.web2admin.showbuttontext 布尔开关显示/隐藏按钮文本:
plugins.web2admin.showbuttontext = False
如果定义了多个数据库对象,所需要做的就是添加一个plugins.web2admin.dbs参数,该参数是数据库对象的元组。默认情况下,该列表只有一个名为 db 的元素,因此,无论出于何种原因,如果唯一的对象名称不同,请添加如下指定:plugins.web2admin.dbs = (my_special_db,) <-- 请注意逗号。
plugins.web2admin.dbs = (db, other_db, session_db)
数据库菜单应出现在顶部导航栏中以启用数据库选择。
您可以通过将plugins.web2admin.fields设置为表名字典和这些表中的字段列表来限制要为特定表显示的字段:
plugins.web2admin.fields={
'test': [db.test.id, db.test.name],
'student':[db.student.id, db.student.first_name]
}
通过检查多个项目并从标题中选择一个操作,可以对多个项目执行操作。
默认情况下定义了两个操作:删除和克隆。
要定义新操作,您必须创建一个函数,该函数将表名和 id 列表作为参数,并将 plugins.web2admin.actions 插件参数设置为一个字典,该字典以操作名称作为键,以操作函数作为值:
def hello_action(table, ids):
if table != 'student':
session.flash = 'Not available'
else:
session.flash = '%s, %s' %(table, ids)
plugins.web2admin.actions = {'hello': hello_action}
如果您想禁用默认操作或根本不需要任何操作(如果您没有创建任何操作),则可以将plugins.web2admin.default_actions 参数设置为空字典。
plugins.web2admin.default_actions={}
plugins.web2admin.links 用于显示可以链接到其他页面的新列。 links 参数必须是一个字典,将表名链接到 dict(header='name',body=lambda row: A(...)) 列表,其中 header 是新列的标题,body 是一个函数,它接受一行并返回一个值。在示例中,该值是 A(...) 助手。
plugins.web2admin.links = {'student':[
dict(header=T('hello'), body=lambda row: A('click me', _href=URL('default', 'hello', args=row.id))),
dict(header=T('foo'), body=lambda row: A('bar', _href=URL('default', 'foo', args=row.id))),
]}
plugins.web2admin.left 是一个可选的左连接表达式,用于构建 ...select(left=...)。它具有链接表名和连接表达式的字典值,例如:
plugins.web2admin.left = {'student': db.student.on(db.test.id)}
plugins.web2admin.filters 是一个字段列表,通过这些字段将在右侧菜单栏中创建快速过滤器,例如:
plugins.web2admin.filters = (db.test.date, db.test.passed, db.test.mark, db.test.name, db.student.last_name)
对于数字字段,获取最小值和最大值,并将间隔分为四个子间隔。支持的字段类型:日期时间、日期、字符串、文本、整数、双精度、布尔值。