update README.rst

This commit is contained in:
long2ice
2020-04-16 00:14:36 +08:00
parent 4e70174c85
commit 6927c6a070
3 changed files with 49 additions and 151 deletions

View File

@ -55,142 +55,6 @@ Backend
~~~~~~~
Only you should do is runing a fastapi app and mount admin app from fastapi-admin,then call ``init()``.
.. code-block:: python
import uvicorn
from fastapi import FastAPI, Depends
from starlette.middleware.cors import CORSMiddleware
from tortoise.contrib.fastapi import register_tortoise
from tortoise.contrib.pydantic import pydantic_queryset_creator
from fastapi_admin.depends import get_model
from fastapi_admin.factory import app as admin_app
from fastapi_admin.schemas import BulkIn
from fastapi_admin.site import Site, Menu
TORTOISE_ORM = {
'connections': {
'default': 'mysql://root:123456@127.0.0.1:3306/fastapi-admin'
},
'apps': {
'models': {
'models': ['examples.models'],
'default_connection': 'default',
}
}
}
@admin_app.post(
'/{resource}/bulk/test_bulk' # must be format with /{resource}/bulk/<action>
)
async def test_bulk(
bulk_in: BulkIn,
model=Depends(get_model)
):
qs = model.filter(pk__in=bulk_in.pk_list)
pydantic = pydantic_queryset_creator(model)
ret = await pydantic.from_queryset(qs)
return ret.dict()
def create_app():
fast_app = FastAPI(debug=True)
register_tortoise(fast_app, config=TORTOISE_ORM, generate_schemas=True)
fast_app.mount('/admin', admin_app)
admin_app.init(
user_model='User',
admin_secret='test',
models='examples.models',
site=Site(
name='FastAPI-admin Demo',
logo='https://github.com/long2ice/fastapi-admin/raw/master/front/static/img/logo.png',
locale='en-US',
locale_switcher=True,
menu=[
Menu(
name='Home',
url='/',
icon='fa fa-home'
),
Menu(
name='Content',
title=True
),
Menu(
name='Product',
url='/rest/Product',
icon='icon-list',
search_fields=('type',),
fields_type={
'type': 'radiolist'
},
bulk_actions=[
{
'value': 'delete',
'text': 'delete_all',
}
, {
'value': 'test_bulk', # this is the action need in fastapi route.
'text': 'TestBulk' # will show in front.
}
]
),
Menu(
name='Category',
url='/rest/Category',
icon='icon-list'
),
Menu(
name='External',
title=True
),
Menu(
name='Github',
url='https://github.com/long2ice/fastapi-admin',
icon='fa fa-github',
external=True
),
Menu(
name='Auth',
title=True
),
Menu(
name='User',
url='/rest/User',
icon='fa fa-user',
fields_type={
'avatar': 'image'
},
exclude=('password',),
search_fields=('username',)
),
Menu(
name='Logout',
url='/logout',
icon='fa fa-lock'
)
]
)
)
fast_app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
return fast_app
app = create_app()
if __name__ == '__main__':
uvicorn.run('main:app', port=8000, debug=True, reload=True, lifespan='on')
Front
~~~~~
``cp .env.development.local.example .env`` and modify,then just run ``cd front && npm run serve``,more reference in `rest-admin <https://github.com/wxs77577/rest-admin>`_.
@ -198,6 +62,53 @@ Front
Features
========
Builtin Auth And Permissions Control
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Inherit ``fastapi_admin.models.User`` and add you own fields,must contains ``is_active`` and ``is_superuser``.
And you must import ``Permission`` and ``Role``, just import and do nothing:
.. code-block:: python
from fastapi_admin.models import User as AdminUser, Permission, Role
class AdminUser(AdminUser,Model):
is_active = fields.BooleanField(default=False, description='Is Active')
is_superuser = fields.BooleanField(default=False, description='Is Superuser')
status = fields.IntEnumField(Status, description='User Status')
created_at = fields.DatetimeField(auto_now_add=True)
updated_at = fields.DatetimeField(auto_now=True)
Then register permissions and createsuperuser:
.. code-block:: shell
> fastapi-admin -h
usage: fastapi-admin [-h] -c CONFIG {register_permissions,createsuperuser} ...
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
Tortoise-orm config dict import path,like settings.TORTOISE_ORM.
subcommands:
{register_permissions,createsuperuser}
And set ``permission=True`` to active it:
.. code-block:: python
admin_app.init(
user_model='AdminUser',
admin_secret='123456',
models='examples.models',
permission=True,
site=Site(
...
)
)
Enum Support
~~~~~~~~~~~~
When you define a enum field of tortoise-orm,like ``IntEnumField``,you can inherit ``fastapi_admin.enum.EnumMixin`` and impl ``choices()`` method,
@ -216,19 +127,6 @@ FastAPI-admin will auto read and display and render a ``select`` widget in front
cls.off: 'OFF'
}
Admin User Model
~~~~~~~~~~~~~~~~
Inherit ``fastapi_admin.models.User`` and add you own fields,then pass in ``init()``.
.. code-block:: python
class AdminUser(User):
is_active = fields.BooleanField(default=False, description='Is Active')
status = fields.IntEnumField(Status, description='User Status')
created_at = fields.DatetimeField(auto_now_add=True)
updated_at = fields.DatetimeField(auto_now=True)
Verbose Name
~~~~~~~~~~~~
FastAPI-admin will auto read ``description`` defined in tortoise-orm model ``Field`` and display in front.

View File

@ -6,7 +6,7 @@ from fastapi_admin.models import User as AdminUser, Permission, Role
from .enums import ProductType
class User(AdminUser, Model):
class User(AdminUser):
last_login = fields.DatetimeField(description='Last Login', default=datetime.datetime.now)
is_active = fields.BooleanField(default=True, description='Is Active')
is_superuser = fields.BooleanField(default=False, description='Is SuperUser')

View File

@ -1,3 +1,3 @@
from . import routes
__version__ = '0.1.9'
__version__ = '0.2.0'