Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

experimenting for Swagger api docs #27

Merged
merged 3 commits into from
Jan 31, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/images/redoc.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ Welcome to Piccolo Admin's documentation
../installation/index
../asgi/index
../authentication/index
../redoc/index
../contributing/index
../changes/index
8 changes: 8 additions & 0 deletions docs/source/redoc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Redoc documentation
===================

During development is useful to have api documentation with all the methods and parameters per table.
After login in Piccolo admin you can go to ``localhost:8000/admin/api/tables/your_table/redoc`` and see
`Redoc <https://github.com/Redocly/redoc>`_ api documentation for your table.

.. image:: https://raw.githubusercontent.com/piccolo-orm/piccolo_admin/master/docs/images/redoc.png
46 changes: 28 additions & 18 deletions piccolo_admin/endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@
import os
import typing as t

from fastapi import FastAPI

from piccolo.table import Table
from piccolo.apps.user.tables import BaseUser

from piccolo_admin import __VERSION__ as piccolo_admin_version
from piccolo_api.csrf.middleware import CSRFMiddleware
from piccolo_api.crud.endpoints import PiccoloCRUD
from piccolo_api.fastapi.endpoints import FastAPIWrapper, FastAPIKwargs
from piccolo_api.rate_limiting.middleware import (
RateLimitingMiddleware,
RateLimitProvider,
Expand Down Expand Up @@ -78,21 +81,35 @@ def __init__(
)

if not rate_limit_provider:
rate_limit_provider = InMemoryLimitProvider(
limit=1000, timespan=300
)
rate_limit_provider = InMemoryLimitProvider(limit=1000, timespan=300)

table_routes: t.List[BaseRoute] = [
Mount(
path=f"/{table._meta.tablename}/",
app=PiccoloCRUD(
table, read_only=read_only, page_size=page_size
path=f"/{table._meta.tablename}",
app=FastAPIWrapper(
root_url=f"/{table._meta.tablename}s",
fastapi_app=FastAPI(
title=f"{self.site_name}",
description=f"API documentation for table "
f"{table._meta.tablename.capitalize()}",
),
piccolo_crud=PiccoloCRUD(
table=table,
read_only=False,
),
fastapi_kwargs=FastAPIKwargs(
all_routes={"tags": [f"{table._meta.tablename.capitalize()}"]},
),
),
)
for table in tables
]
table_routes += [
Route(path="/", endpoint=self.get_table_list, methods=["GET"],)
Route(
path="/",
endpoint=self.get_table_list,
methods=["GET"],
)
]

routes: t.List[BaseRoute] = [
Expand Down Expand Up @@ -130,25 +147,19 @@ def __init__(
),
Route(
path="/logout/",
endpoint=session_logout(
session_table=session_table
),
endpoint=session_logout(session_table=session_table),
methods=["POST"],
),
Mount(
path="/user/",
app=auth_middleware(
Router(
[Route(path="/", endpoint=self.get_user)]
)
Router([Route(path="/", endpoint=self.get_user)])
),
),
Mount(
path="/meta/",
app=auth_middleware(
Router(
[Route(path="/", endpoint=self.get_meta)]
)
Router([Route(path="/", endpoint=self.get_meta)])
),
),
]
Expand Down Expand Up @@ -203,8 +214,7 @@ def get_all_tables(

def get_references(table: t.Type[Table]):
references = [
i._foreign_key_meta.references
for i in table._meta.foreign_key_columns
i._foreign_key_meta.references for i in table._meta.foreign_key_columns
]
for reference in references:
if reference not in output:
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ piccolo_api>=0.11.0
uvicorn
aiofiles>=0.5.0
Hypercorn
fastapi>=0.62.0
targ>=0.1.9