Muffin-Admin – uma extensão do Muffin que implementa interfaces administrativas
Suporte para Peewee ORM, Mongo, SQLAlchemy Core através de Muffin-Rest;
Filtragem e classificação automática de itens;
Conteúdo
Características
Requisitos
Instalação
Uso
Autenticação
Ações personalizadas
Opções de configuração
Rastreador de bugs
Contribuindo
Colaboradores
Licença
píton >= 3.9
Muffin-Admin deve ser instalado usando pip:
pip instalar muffin-admin
Com suporte SQLAlchemy Core:
pip instalar muffin-admin[sqlalchemy]
Com suporte Peewee ORM:
pip instalar muffin-admin[peewee]
Inicialize o administrador:
from muffin_admin importar Pluginadmin = Plugin(**opções)
Inicialize manipuladores administrativos (exemplo para Peewee ORM):
de muffin_admin importar PWAdminHandler @admin.route class UserResource(PWAdminHandler): """Criar recurso administrativo para o modelo de usuário.""" class Meta: """Ajustar o recurso.""" # Modelo Peewee para o modelo de recurso administrativo = Usuário # Filtros filtros = 'email' , 'created', 'is_active', 'role' # Ajusta esquemas de serialização/desserialização schema_meta = { 'load_only': ('password',), 'dump_only': ('criado',), } # Colunas para mostrar colunas = 'id', 'email', 'is_active', 'role', 'created' # Custom Material-UI icon icon = 'People'
Conecte o administrador a um aplicativo Muffin:
admin.setup(aplicativo, **opções)
Decore uma função de autenticação com admin.check_auth
:
@admin.check_authasync def auth(request):"""Método de autorização falso. Apenas verifica se existe um token de autenticação na solicitação."""return request.headers.get('authorization')
Registre uma função para retornar informações do usuário:
@admin.get_identityasync def ident(request):"""Obter informações atuais do usuário."""pk = request.headers.get('authorization')user = User.select().where(User.id == pk) .first() se usuário:return {"id": user.id, "fullName": user.email}
Implemente um manipulador de login para a página de autenticação padrão do react-admin:
@admin.loginasync def login(solicitação):"""Faça login em um usuário."""data = await request.data()user = User.select().where(User.email == data['nomedeusuário'], User.password == data['password']).first()return ResponseJSON(usuário e user.id)
Para referência adicional, verifique https://github.com/klen/muffin-admin/tree/develop/examples <examples> no repositório.
de muffin_admin importar 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, recurso=Nenhum): # ...
Nome | Valor padrão | Descrição |
prefixo | "/admin" | Prefixo do URL HTTP do administrador |
título | "Muffin Admin" | Cargo do administrador |
main_js_url | "{prefix}/main.js" | Um link para o arquivo JS principal |
custom_js_url | "" | Um link para o arquivo JS personalizado |
custom_css_url | "" | Um link para um arquivo CSS personalizado |
login_url | None | Um URL HTTP para sua página de login personalizada |
logout_url | None | Um URL HTTP para sua página de logout personalizada |
menu_sort | True | Classificar itens do menu |
armazenamento_auth | "localstorage" | Onde manter as informações de autorização (armazenamento local | cookies) |
nome_de_auth_storage | muffin_admin_auth | Nome do armazenamento local/cookie para informações de autenticação |
app_bar_links | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Links da barra de aplicativos |
modo_mutação | "optimistic" | Modo de mutação de edição React-Admin (pessimista | otimista | desfazível) |
Se você tiver alguma sugestão, relatório de bug ou aborrecimento, relate-o ao rastreador de problemas em https://github.com/klen/muffin-admin/issues
O desenvolvimento do Muffin-Admin acontece em: https://github.com/klen/muffin-admin
klen (Kirill Klenov)
Licenciado sob uma licença do MIT.