Skip to main content

Admin interface for Muffin Framework

Project description

Muffin-Admin – an extension to Muffin that implements admin-interfaces

Tests Status PYPI Version Python Versions
https://raw.github.com/klen/muffin-admin/develop/.github/muffin-admin.png

Features

Requirements

  • python >= 3.7

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.

Configuration options

Name

Default value

Description

prefix

"/admin"

Admin’s HTTP URL prefix

title

"Muffin Admin"

Admin’s title

custom_js_url

""

A link to custom JS file

custom_css_url

""

A link to custom CSS file

logout_url

None

An HTTP URL for your custom logout page

auth_storage

"localstorage"

Where to keep authorization information (localstorage|cookies)

auth_storage_name

muffin_admin_auth

Localstorage/Cookie name for authentication info

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

This version

1.7.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muffin-admin-1.7.1.tar.gz (708.6 kB view details)

Uploaded Source

Built Distribution

muffin_admin-1.7.1-py3-none-any.whl (710.8 kB view details)

Uploaded Python 3

File details

Details for the file muffin-admin-1.7.1.tar.gz.

File metadata

  • Download URL: muffin-admin-1.7.1.tar.gz
  • Upload date:
  • Size: 708.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for muffin-admin-1.7.1.tar.gz
Algorithm Hash digest
SHA256 ae4f50be67de4f416daab300d02714a8b352a05b60ec106ca7d4ea8f00f3d8ec
MD5 e11e6b81440da0bf8b3cbdd5d0405e14
BLAKE2b-256 63db00a46cf24b40b8db9bd9284162cfc5d62efc99a90719855de967b0e5bd01

See more details on using hashes here.

File details

Details for the file muffin_admin-1.7.1-py3-none-any.whl.

File metadata

  • Download URL: muffin_admin-1.7.1-py3-none-any.whl
  • Upload date:
  • Size: 710.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for muffin_admin-1.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 187d1ee6cc74cdfc4eace2744367a1174bcd7f54a08f211d9379a2d3eecb8b34
MD5 0a71b4d1d6377a88d5a8f26cb4391f99
BLAKE2b-256 a99336e1c006b9e1c4c7f15df46a14064f3dc8064587101c01ae519b35f8926b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page