This commit is contained in:
s.mostryukov 2024-10-01 15:05:49 +03:00
parent cf2fbf5955
commit 04846eb8a2
9 changed files with 5190 additions and 2 deletions

10
api/__init__.py Normal file
View File

@ -0,0 +1,10 @@
from api.swagger import router as swagger_router
from fastapi import APIRouter
from config import settings
router = APIRouter()
router.include_router(
swagger_router,
prefix=settings.prefix.swagger,
)

19
api/swagger.py Normal file
View File

@ -0,0 +1,19 @@
from fastapi import APIRouter
from fastapi.openapi.docs import get_swagger_ui_html
from config import settings
router = APIRouter()
@router.get("", include_in_schema=False)
async def custom_swagger_ui_html():
return get_swagger_ui_html(
openapi_url=settings.swagger.openapi_url,
title=settings.swagger.title,
oauth2_redirect_url=settings.swagger.oauth2_redirect_url,
swagger_js_url=settings.swagger.swagger_js_url,
swagger_css_url=settings.swagger.swagger_css_url,
swagger_favicon_url=settings.swagger.swagger_favicon_url,
)

View File

@ -9,7 +9,9 @@ from pathlib import Path
import logging
BASE_DIR = Path(__file__)
BASE_DIR = Path(__file__).parent
TEMPLATES_DIR = BASE_DIR / "templates"
STATIC_DIR = TEMPLATES_DIR / "static"
class RunConfig(BaseModel):
@ -18,6 +20,19 @@ class RunConfig(BaseModel):
reload: bool = True
class PrefixConfig(BaseModel):
swagger: str = "/docs"
class SwaggerConfig(BaseModel):
openapi_url: str = "/openapi.json"
title: str = "Netadm API"
oauth2_redirect_url: str = "/docs/oauth2-redirect"
swagger_js_url: str = "/static/swagger/swagger-ui-bundle.js"
swagger_css_url: str = "/static/swagger/swagger-ui.css"
swagger_favicon_url: str = "/static/swagger/favicon.png"
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=(
@ -29,6 +44,8 @@ class Settings(BaseSettings):
env_prefix="NETADM_CONFIG__",
)
run: RunConfig = RunConfig()
swagger: SwaggerConfig = SwaggerConfig()
prefix: PrefixConfig = PrefixConfig()
settings = Settings()

View File

@ -1,9 +1,11 @@
import logging
from config import settings
from config import settings, STATIC_DIR
from scripts.сheck_available_ports import start_check
import uvicorn
from fastapi import FastAPI
from fastapi.responses import ORJSONResponse
from starlette.staticfiles import StaticFiles
from api import router as swagger_router
input_text = """
@ -27,6 +29,9 @@ main_app = FastAPI(
default_response_class=ORJSONResponse,
docs_url=None,
)
main_app.include_router(swagger_router)
main_app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
if __name__ == "__main__":

5130
templates/static/js/htmx.js Normal file

File diff suppressed because it is too large Load Diff

1
templates/static/js/htmx.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long