Skip to main content

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.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.

Release files for muffin-admin 3.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muffin-admin 3.7.4
File Size Uploaded
muffin_admin-3.7.4.tar.gz 1.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for muffin-admin 3.7.4
File Interpreter ABI Platform
muffin_admin-3.7.4-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / muffin_admin-3.7.4.tar.gz

Download URL muffin_admin-3.7.4.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
70b023c805f62be5822d3745e6e288f4bfc0d31c568e155f838dd14199b8cc87
BLAKE2b-256 checksum
How to use checksums
9c7d3db70fa70d742272b8bc66ffe35d2c8453c5330999dc2976f250dbbda15c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.10.12 Linux/6.5.0-1023-azure

Release files / muffin_admin-3.7.4-py3-none-any.whl

Download URL muffin_admin-3.7.4-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
ce71ca7c2dbbb3a6cadcbc0a89e2bd4ee1568c3ea8208573d203ba84f4f381cd
BLAKE2b-256 checksum
How to use checksums
53990dcbd799add7b98b7bf50a49301101410ec70312d7189500df06580afdf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.10.12 Linux/6.5.0-1023-azure

Release history Release notifications | RSS feed

13.1.0

2 release files

13.0.0

2 release files

12.0.0

2 release files

11.8.0

2 release files

11.7.2

2 release files

11.7.0

2 release files

11.6.0

2 release files

11.5.0

2 release files

11.4.4

2 release files

11.4.3

2 release files

11.3.1

2 release files

11.2.9

2 release files

11.2.8

2 release files

11.2.6

2 release files

11.2.5

2 release files

11.2.4

2 release files

11.2.3

2 release files

11.2.2

2 release files

11.2.1

2 release files

11.2.0

2 release files

11.1.3

2 release files

11.1.2

2 release files

10.0.1

2 release files

9.5.4

2 release files

9.5.3

2 release files

9.5.2

2 release files

9.5.1

2 release files

9.5.0

2 release files

9.4.5

2 release files

9.4.3

2 release files

9.4.2

2 release files

9.4.1

2 release files

9.4.0

2 release files

9.3.0

2 release files

9.2.4

2 release files

9.2.3

2 release files

9.2.2

2 release files

9.2.1

2 release files

9.1.2

2 release files

9.1.1

2 release files

9.1.0

2 release files

9.0.0

2 release files

8.5.6

2 release files

8.5.5

2 release files

8.5.4

2 release files

8.5.1

2 release files

8.5.0

2 release files

8.4.1

2 release files

8.4.0

2 release files

8.3.0

2 release files

8.2.0

2 release files

8.1.2

2 release files

8.1.1

2 release files

8.1.0

2 release files

8.0.0

2 release files

7.0.5

2 release files

7.0.4

2 release files

7.0.3

2 release files

7.0.2

2 release files

7.0.1

2 release files

7.0.0

2 release files

6.2.0

2 release files

6.1.3

2 release files

6.1.2

2 release files

6.1.1

2 release files

6.1.0

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.0.0

2 release files

4.0.0

2 release files

3.20.0

2 release files

3.19.0

2 release files

3.18.8

2 release files

3.18.6

2 release files

3.18.5

2 release files

3.18.3

2 release files

3.16.0

2 release files

3.15.0

2 release files

3.14.1

2 release files

3.14.0

2 release files

3.13.4

2 release files

3.13.3

2 release files

3.13.2

2 release files

3.13.1

2 release files

3.13.0

2 release files

3.12.5

2 release files

3.12.4

2 release files

3.12.3

2 release files

3.12.2

2 release files

3.12.1

2 release files

3.12.0

2 release files

3.11.2

2 release files

3.11.1

2 release files

3.11.0

2 release files

3.10.1

2 release files

3.10.0

2 release files

3.9.0

2 release files

3.8.5

2 release files

3.8.4

2 release files

3.8.3

2 release files

3.8.2

2 release files

3.8.1

2 release files

3.8.0

2 release files

This release

3.7.4 This release

2 release files

3.7.3

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7.0

2 release files

3.6.3

2 release files

3.6.2

2 release files

3.6.1

2 release files

3.5.0

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.12

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.0

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.2

2 release files

2.8.0

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.0

2 release files

2.6.7

2 release files

2.6.6

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.9

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.45.8

2 release files

1.45.7

2 release files

1.45.6

2 release files

1.45.5

2 release files

1.45.4

2 release files

1.45.3

2 release files

1.45.2

2 release files

1.45.1

2 release files

1.45.0

2 release files

1.44.4

2 release files

1.44.3

2 release files

1.44.2

2 release files

1.44.1

2 release files

1.44.0

2 release files

1.42.1

2 release files

1.42.0

2 release files

1.38.4

2 release files

1.38.3

2 release files

1.38.2

2 release files

1.38.1

2 release files

1.38.0

2 release files

1.37.4

2 release files

1.36.8

2 release files

1.36.7

2 release files

1.36.6

2 release files

1.36.5

2 release files

1.36.4

2 release files

1.36.3

2 release files

1.36.2

2 release files

1.36.1

2 release files

1.36.0

2 release files

1.35.1

2 release files

1.35.0

2 release files

1.34.0

2 release files

1.32.6

2 release files

1.32.5

2 release files

1.32.4

2 release files

1.32.2

2 release files

1.30.0

2 release files

1.28.2

2 release files

1.28.1

2 release files

1.28.0

2 release files

1.26.1

2 release files

1.26.0

2 release files

1.25.1

2 release files

1.25.0

2 release files

1.24.5

2 release files

1.24.4

2 release files

1.24.3

2 release files

1.24.2

2 release files

1.24.1

2 release files

1.24.0

2 release files

1.23.6

2 release files

1.23.5

2 release files

1.23.4

2 release files

1.23.3

2 release files

1.23.2

2 release files

1.21.1

2 release files

1.21.0

2 release files

1.20.0

2 release files

1.14.4

2 release files

1.14.3

2 release files

1.14.1

2 release files

1.13.0

2 release files

1.12.1

2 release files

1.12.0

2 release files

1.11.1

2 release files

1.11.0

2 release files

1.9.0

2 release files

1.8.1

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

0.22.5

2 release files

0.22.3

2 release files

0.22.2

1 release file

0.22.1

1 release file

0.22.0

1 release file

0.21.0

1 release file

0.20.2

1 release file

0.20.1

1 release file

0.11.7

2 release files

0.11.6

2 release files

0.11.5

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.7

3 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page