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

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):
         # ...

     @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

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

app_bar_links

[{'url': '/', 'icon': 'Home', 'title': 'Home'}]

Appbar links

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.

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.14.1.tar.gz (683.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

muffin_admin-1.14.1-py3-none-any.whl (683.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for muffin-admin-1.14.1.tar.gz
Algorithm Hash digest
SHA256 3898b74282ae53e1d0ac56d072db7dd61f70c5b0de117ffc8c804e4623d2b5b1
MD5 f1b8a086ac416bc97f306487e10ac700
BLAKE2b-256 179d423e501d6ff9d2a006d1984332620b91ea145954d4ae70eca3f8cf119681

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for muffin_admin-1.14.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cded8cd72a43aa6b94b22d04e1e9e7ed94f0460f90050c622dafde3ce1981c0c
MD5 21257f5886bd218a4316648edff83b7f
BLAKE2b-256 d6054a0e4a43372bc1ab33d2db60c2a8e4ce86d336c0b5fc8abfde65abb43097

See more details on using hashes here.

Release history Release notifications | RSS feed

13.1.0

2 files

13.0.0

2 files

12.0.0

2 files

11.8.0

2 files

11.7.2

2 files

11.7.0

2 files

11.6.0

2 files

11.5.1

2 files

11.5.0

2 files

11.4.4

2 files

11.4.3

2 files

11.3.1

2 files

11.3.0

2 files

11.2.11

2 files

11.2.10

2 files

11.2.9

2 files

11.2.8

2 files

11.2.6

2 files

11.2.5

2 files

11.2.4

2 files

11.2.3

2 files

11.2.2

2 files

11.2.1

2 files

11.2.0

2 files

11.1.3

2 files

11.1.2

2 files

11.0.0

2 files

10.0.1

2 files

9.5.4

2 files

9.5.3

2 files

9.5.2

2 files

9.5.1

2 files

9.5.0

2 files

9.4.5

2 files

9.4.3

2 files

9.4.2

2 files

9.4.1

2 files

9.4.0

2 files

9.3.0

2 files

9.2.4

2 files

9.2.3

2 files

9.2.2

2 files

9.2.1

2 files

9.1.2

2 files

9.1.1

2 files

9.1.0

2 files

9.0.0

2 files

8.5.6

2 files

8.5.5

2 files

8.5.4

2 files

8.5.1

2 files

8.5.0

2 files

8.4.1

2 files

8.4.0

2 files

8.3.0

2 files

8.2.0

2 files

8.1.2

2 files

8.1.1

2 files

8.1.0

2 files

8.0.0

2 files

7.0.5

2 files

7.0.4

2 files

7.0.3

2 files

7.0.2

2 files

7.0.1

2 files

7.0.0

2 files

6.2.0

2 files

6.1.3

2 files

6.1.2

2 files

6.1.1

2 files

6.1.0

2 files

6.0.1

2 files

6.0.0

2 files

5.0.0

2 files

4.0.0

2 files

3.20.0

2 files

3.19.0

2 files

3.18.8

2 files

3.18.6

2 files

3.18.5

2 files

3.18.3

2 files

3.18.2

2 files

3.18.1

2 files

3.18.0

2 files

3.17.1

2 files

3.17.0

2 files

3.16.0

2 files

3.15.0

2 files

3.14.1

2 files

3.14.0

2 files

3.13.4

2 files

3.13.3

2 files

3.13.2

2 files

3.13.1

2 files

3.13.0

2 files

3.12.5

2 files

3.12.4

2 files

3.12.3

2 files

3.12.2

2 files

3.12.1

2 files

3.12.0

2 files

3.11.2

2 files

3.11.1

2 files

3.11.0

2 files

3.10.1

2 files

3.10.0

2 files

3.9.0

2 files

3.8.5

2 files

3.8.4

2 files

3.8.3

2 files

3.8.2

2 files

3.8.1

2 files

3.8.0

2 files

3.7.4

2 files

3.7.3

2 files

3.7.2

2 files

3.7.1

2 files

3.7.0

2 files

3.6.3

2 files

3.6.2

2 files

3.6.1

2 files

3.5.0

2 files

3.4.2

2 files

3.4.1

2 files

3.4.0

2 files

3.3.12

2 files

3.2.2

2 files

3.2.1

2 files

3.2.0

2 files

3.1.2

2 files

3.1.1

2 files

3.1.0

2 files

3.0.3

2 files

3.0.2

2 files

3.0.0

2 files

2.9.2

2 files

2.9.1

2 files

2.9.0

2 files

2.8.2

2 files

2.8.0

2 files

2.7.3

2 files

2.7.2

2 files

2.7.0

2 files

2.6.7

2 files

2.6.6

2 files

2.6.5

2 files

2.6.4

2 files

2.6.2

2 files

2.6.1

2 files

2.6.0

2 files

2.5.4

2 files

2.5.3

2 files

2.5.2

2 files

2.5.1

2 files

2.5.0

2 files

2.4.0

2 files

2.3.13

2 files

2.3.12

2 files

2.3.9

2 files

2.3.7

2 files

2.3.6

2 files

2.3.5

2 files

2.3.4

2 files

2.3.3

2 files

2.3.1

2 files

2.3.0

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.45.8

2 files

1.45.7

2 files

1.45.6

2 files

1.45.5

2 files

1.45.4

2 files

1.45.3

2 files

1.45.2

2 files

1.45.1

2 files

1.45.0

2 files

1.44.4

2 files

1.44.3

2 files

1.44.2

2 files

1.44.1

2 files

1.44.0

2 files

1.43.0

2 files

1.42.1

2 files

1.42.0

2 files

1.41.1

2 files

1.40.0

2 files

1.39.2

2 files

1.39.1

2 files

1.39.0

2 files

1.38.4

2 files

1.38.3

2 files

1.38.2

2 files

1.38.1

2 files

1.38.0

2 files

1.37.4

2 files

1.37.1

2 files

1.37.0

2 files

1.36.8

2 files

1.36.7

2 files

1.36.6

2 files

1.36.5

2 files

1.36.4

2 files

1.36.3

2 files

1.36.2

2 files

1.36.1

2 files

1.36.0

2 files

1.35.1

2 files

1.35.0

2 files

1.34.0

2 files

1.33.1

2 files

1.32.6

2 files

1.32.5

2 files

1.32.4

2 files

1.32.2

2 files

1.31.3

2 files

1.31.2

2 files

1.31.1

2 files

1.31.0

2 files

1.30.0

2 files

1.29.0

2 files

1.28.2

2 files

1.28.1

2 files

1.28.0

2 files

1.27.2

2 files

1.26.1

2 files

1.26.0

2 files

1.25.1

2 files

1.25.0

2 files

1.24.5

2 files

1.24.4

2 files

1.24.3

2 files

1.24.2

2 files

1.24.1

2 files

1.24.0

2 files

1.23.6

2 files

1.23.5

2 files

1.23.4

2 files

1.23.3

2 files

1.23.2

2 files

1.21.1

2 files

1.21.0

2 files

1.20.0

2 files

1.19.2

2 files

1.19.1

2 files

1.18.2

2 files

1.18.1

2 files

1.17.0

2 files

1.16.0

2 files

1.15.0

2 files

1.14.4

2 files

1.14.3

2 files

This release

1.14.1 This release

2 files

1.13.0

2 files

1.12.1

2 files

1.12.0

2 files

1.11.1

2 files

1.11.0

2 files

1.10.0

2 files

1.9.0

2 files

1.8.1

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.2

2 files

1.1.1

2 files

0.22.5

2 files

0.22.3

2 files

0.22.2

1 file

0.22.1

1 file

0.22.0

1 file

0.21.0

1 file

0.20.2

1 file

0.20.1

1 file

0.11.7

2 files

0.11.6

2 files

0.11.5

2 files

0.11.4

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.1

2 files

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.9

2 files

0.5.7

3 files

0.5.6

2 files

0.5.5

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page