Muffin框架的管理界面
项目描述
Muffin-Admin – Muffin的扩展,实现了管理接口
特性
自动过滤和排序项目;
需求
python >= 3.9
安装
Muffin-Admin 应使用pip安装
pip install muffin-admin
pip install muffin-admin[sqlalchemy]
pip install muffin-admin[peewee]
使用
初始化admin
from muffin_admin import Plugin
admin = Plugin(**options)
初始化admin处理器(示例为Peewee ORM)
from muffin_admin import PWAdminHandler
@admin.route
class UserResource(PWAdminHandler):
"""Create Admin Resource for the User model."""
class Meta:
"""Tune the resource."""
# Peewee Model for the admin resource
model = User
# Filters
filters = 'email', 'created', 'is_active', 'role'
# Tune serialization/deserialization schemas
schema_meta = {
'load_only': ('password',),
'dump_only': ('created',),
}
# Columns to show
columns = 'id', 'email', 'is_active', 'role', 'created'
# Custom Material-UI icon
icon = 'People'
将admin连接到Muffin应用程序
admin.setup(app, **options)
身份验证
使用admin.check_auth装饰身份验证函数
@admin.check_auth
async def auth(request):
"""Fake authorization method. Just checks for an auth token exists in request."""
return request.headers.get('authorization')
注册一个函数以返回用户信息
@admin.get_identity
async def ident(request):
"""Get current user information."""
pk = request.headers.get('authorization')
user = User.select().where(User.id == pk).first()
if user:
return {"id": user.id, "fullName": user.email}
实现标准react-admin身份验证页面的登录处理器
@admin.login
async def login(request):
"""Login a user."""
data = await request.data()
user = User.select().where(
User.email == data['username'], User.password == data['password']).first()
return ResponseJSON(user and user.id)
有关进一步参考,请检查仓库中的 https://github.com/klen/muffin-admin/tree/develop/examples <examples>。
自定义操作
from muffin_admin import PWAdminHandler
@admin.route
class UserResource(PWAdminHandler):
# ...
@PWAdminHandler.action('users/disable', view='list')
async def disable_users(self, request, resource=None):
ids = request.query.getall('ids')
# ...
@PWAdminHandler.action('users/{id}/admin', view='show')
async def mark_admin(self, request, resource=None):
# ...
配置选项
名称 |
默认值 |
描述 |
前缀 |
"/admin" |
管理员的 HTTP URL 前缀 |
标题 |
"Muffin Admin" |
管理员的标题 |
main_js_url |
"{prefix}/main.js" |
主 JS 文件的链接 |
custom_js_url |
"" |
自定义 JS 文件的链接 |
custom_css_url |
"" |
自定义 CSS 文件的链接 |
login_url |
None |
自定义登录页面的 HTTP URL |
logout_url |
None |
自定义注销页面的 HTTP URL |
menu_sort |
True |
排序菜单项 |
auth_storage |
"localstorage" |
保存授权信息的位置(localstorage|cookies) |
auth_storage_name |
muffin_admin_auth |
认证信息的本地存储/Cookie 名称 |
app_bar_links |
[{'url': '/', 'icon': 'Home', 'title': 'Home'}] |
应用栏链接 |
mutation_mode |
"optimistic" |
React-Admin 编辑突变模式(pessimistic|optimistic|undoable) |
错误追踪器
如果您有任何建议、错误报告或烦恼,请向问题跟踪器报告:https://github.com/klen/muffin-admin/issues
贡献
Muffin-Admin 的开发发生在:https://github.com/klen/muffin-admin
贡献者
klen (Kirill Klenov)
许可证
许可协议为MIT 协议。