Admin interface for Muffin Framework
Project description
Muffin-Admin – an extension to Muffin that implements admin-interfaces
Features
Support for Peewee ORM, Mongo, SQLAlchemy Core through Muffin-Rest;
Automatic filtering and sorting for items;
Requirements
python >= 3.8
Installation
Muffin-Admin should be installed using pip:
pip install muffin-admin
With SQLAlchemy Core support:
pip install muffin-admin[sqlalchemy]
With Peewee ORM support:
pip install muffin-admin[peewee]
Usage
Initialize the admin:
from muffin_admin import Plugin
admin = Plugin(**options)
Initialize admin handlers (example for 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'
Connect admin to an Muffin application:
admin.setup(app, **options)
Authentication
Decorate an authentication function with 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')
Register a function to return user’s information:
@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}
Implement a login handler for standart react-admin auth page:
@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)
For futher reference check https://github.com/klen/muffin-admin/tree/develop/examples <examples> in the repository.
Custom Actions
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):
# ...
Configuration options
Name |
Default value |
Description |
prefix |
"/admin" |
Admin’s HTTP URL prefix |
title |
"Muffin Admin" |
Admin’s title |
main_js_url |
"{prefix}/main.js" |
A link to main JS file |
custom_js_url |
"" |
A link to custom JS file |
custom_css_url |
"" |
A link to custom CSS file |
login_url |
None |
An HTTP URL for your custom login page |
logout_url |
None |
An HTTP URL for your custom logout page |
menu_sort |
True |
Sort menu items |
auth_storage |
"localstorage" |
Where to keep authorization information (localstorage|cookies) |
auth_storage_name |
muffin_admin_auth |
Localstorage/Cookie name for authentication info |
app_bar_links |
[{'url': '/', 'icon': 'Home', 'title': 'Home'}] |
Appbar links |
mutation_mode |
"optimistic" |
React-Admin edit mutation mode (pessimistic|optimistic|undoable) |
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-admin/issues
Contributing
Development of Muffin-Admin happens at: https://github.com/klen/muffin-admin
Contributors
klen (Kirill Klenov)
License
Licensed under a MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file muffin_admin-3.6.1.tar.gz
.
File metadata
- Download URL: muffin_admin-3.6.1.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.12 Linux/6.5.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa4824338e5f2112093735c9f29198bab8f58589567def3e5005aebddf016812 |
|
MD5 | 070f4999114555550b12aea5b1bb867e |
|
BLAKE2b-256 | 69a4f23ddaa500596b255eb9f1272083e3b5ffdb5d96b192ec9a284a9ea2086e |
File details
Details for the file muffin_admin-3.6.1-py3-none-any.whl
.
File metadata
- Download URL: muffin_admin-3.6.1-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.12 Linux/6.5.0-1023-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdf0ea605dc7456317eba1279115d6ce04288a979d27d433bad15e639c3fc024 |
|
MD5 | c3191a8aa390003b0ec87c2d1b3d477d |
|
BLAKE2b-256 | 74206a7745fee96a66dd66e335d84f51949d60816a3a7ac55ef2c4b4fab1befb |