Muffin-Admin : una extensión de Muffin que implementa interfaces de administración
Soporte para Peewee ORM, Mongo, SQLAlchemy Core a través de Muffin-Rest;
Filtrado y clasificación automáticos de artículos;
Contenido
Características
Requisitos
Instalación
Uso
Autenticación
Acciones personalizadas
Opciones de configuración
rastreador de errores
Contribuyendo
Colaboradores
Licencia
pitón >= 3.9
Muffin-Admin debe instalarse usando pip:
instalación de pip muffin-admin
Con soporte SQLAlchemy Core:
pip instalar muffin-admin[sqlalchemy]
Con soporte ORM de Peewee:
pip instalar muffin-admin[peewee]
Inicialice el administrador:
de muffin_admin importar Pluginadmin = Complemento(**opciones)
Inicialice los controladores de administración (ejemplo de Peewee ORM):
desde muffin_admin importar PWAdminHandler @admin.ruta class UserResource(PWAdminHandler): """Crear recurso de administrador para el modelo de usuario.""" class Meta: """Ajustar el recurso.""" # Modelo Peewee para el modelo de recurso de administrador = Usuario # Filtros filtros = 'correo electrónico' , 'created', 'is_active', 'role' # Ajustar esquemas de serialización/deserialización esquema_meta = { 'load_only': ('contraseña',), 'dump_only': ('creado',), } # Columnas para mostrar columnas = 'id', 'email', 'is_active', 'role', 'created' # Icono de interfaz de usuario de material personalizado icon = 'Personas'
Conecte el administrador a una aplicación Muffin:
admin.setup(aplicación, **opciones)
Decora una función de autenticación con admin.check_auth
:
@admin.check_authasync def auth(solicitud):"""Método de autorización falso. Solo verifica si existe un token de autenticación en la solicitud."""return request.headers.get('autorización')
Registre una función para devolver la información del usuario:
@admin.get_identityasync def ident(solicitud):"""Obtener información actual del usuario."""pk = request.headers.get('autorización')user = User.select().where(User.id == pk) .first()if usuario:return {"id": usuario.id, "nombre completo": usuario.correo electrónico}
Implemente un controlador de inicio de sesión para la página de autenticación estándar de reacción-admin:
@admin.loginasync def login(solicitud):"""Iniciar sesión como usuario."""data = await request.data()user = User.select().where(User.email == data['nombre de usuario'], Usuario.contraseña == datos['contraseña']).primero()return ResponseJSON(usuario y usuario.id)
Para obtener más referencias, consulte https://github.com/klen/muffin-admin/tree/develop/examples <examples> en el repositorio.
desde muffin_admin importar PWAdminHandler @admin.ruta clase UserResource(PWAdminHandler): # ... @PWAdminHandler.action('usuarios/disable', view='list') async def enable_users(self, request, recurso=Ninguno): ids = request.query.getall('ids ') # ... @PWAdminHandler.action('usuarios/{id}/admin', view='show') async def mark_admin(self, request, recurso=Ninguno): # ...
Nombre | Valor predeterminado | Descripción |
prefijo | "/admin" | Prefijo de URL HTTP del administrador |
título | "Muffin Admin" | Título del administrador |
URL_js_principal | "{prefix}/main.js" | Un enlace al archivo JS principal |
URL_js_personalizada | "" | Un enlace al archivo JS personalizado |
URL_css_personalizada | "" | Un enlace al archivo CSS personalizado |
URL de inicio de sesión | None | Una URL HTTP para su página de inicio de sesión personalizada |
cerrar sesión_url | None | Una URL HTTP para su página de cierre de sesión personalizada |
menú_ordenar | True | Ordenar elementos del menú |
almacenamiento_autenticación | "localstorage" | Dónde guardar la información de autorización (almacenamiento local|cookies) |
nombre_almacenamiento_autenticación | muffin_admin_auth | Almacenamiento local/nombre de la cookie para información de autenticación |
enlaces_barra_aplicaciones | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Enlaces de la barra de aplicaciones |
modo_mutación | "optimistic" | Modo de mutación de edición de React-Admin (pesimista|optimista|deshacer) |
Si tiene alguna sugerencia, informe de error o molestia, infórmelo al rastreador de problemas en https://github.com/klen/muffin-admin/issues
El desarrollo de Muffin-Admin se realiza en: https://github.com/klen/muffin-admin
klen (Kirill Klenov)
Licenciado bajo licencia MIT.