diff --git a/Dockerfile b/Dockerfile index c2e996b1..58a287a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,7 +37,6 @@ RUN apk add --no-cache \ pip install --no-cache-dir -r requirements.txt && \ # Unzip WebUI \ unzip dist.zip && \ - mv dist templates && \ # Add user addgroup -S ab -g 911 && \ adduser -S ab -G ab -h /ab -s /bin/bash -u 911 && \ diff --git a/backend/src/main.py b/backend/src/main.py index cbc0915f..aaec52ab 100644 --- a/backend/src/main.py +++ b/backend/src/main.py @@ -1,11 +1,13 @@ import logging import uvicorn -from fastapi import FastAPI +from fastapi import FastAPI, Request +from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates from module.api import v1 from module.api.proxy import router as proxy_router -from module.api.web import router as web_router -from module.conf import settings, setup_logger +from module.conf import settings, setup_logger, VERSION from starlette.types import ASGIApp setup_logger(reset=True) @@ -25,19 +27,48 @@ uvicorn_logging_config = { } -def create_app() -> ASGIApp: +def create_app() -> FastAPI: app = FastAPI() # mount routers - app.include_router(web_router) - app.include_router(proxy_router) app.include_router(v1, prefix="/api") + app.include_router(proxy_router) return app app = create_app() + +if VERSION != "DEV_VERSION": + app.mount("/assets", StaticFiles(directory="dist/assets"), name="assets") + # app.mount("/pwa", StaticFiles(directory="dist/pwa"), name="pwa") + templates = Jinja2Templates(directory="dist") + + # Resource + @app.get("/favicon.svg", tags=["html"]) + def favicon(): + return FileResponse("dist/favicon.svg") + + @app.get("/AutoBangumi.svg", tags=["html"]) + def logo(): + return FileResponse("dist/AutoBangumi.svg") + + @app.get("/favicon-light.svg", tags=["html"]) + def favicon_light(): + return FileResponse("dist/favicon-light.svg") + + # HTML Response + @app.get("/{full_path:path}", response_class=HTMLResponse, tags=["html"]) + def index(request: Request): + context = {"request": request} + return templates.TemplateResponse("index.html", context) + +else: + @app.get("/", status_code=302, tags=["html"]) + def index(): + return RedirectResponse("/docs") + if __name__ == "__main__": uvicorn.run( app, diff --git a/backend/src/module/api/web.py b/backend/src/module/api/web.py deleted file mode 100644 index 1a4217f9..00000000 --- a/backend/src/module/api/web.py +++ /dev/null @@ -1,37 +0,0 @@ -from fastapi import APIRouter, Request -from fastapi.responses import FileResponse, HTMLResponse, RedirectResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates - -from module.conf import VERSION - -router = APIRouter() - -if VERSION != "DEV_VERSION": - router.mount("/assets", StaticFiles(directory="templates/assets"), name="assets") - templates = Jinja2Templates(directory="templates") - - # Resource - @router.get("/favicon.svg", tags=["html"]) - def favicon(): - return FileResponse("templates/favicon.svg") - - @router.get("/AutoBangumi.svg", tags=["html"]) - def logo(): - return FileResponse("templates/AutoBangumi.svg") - - @router.get("/favicon-light.svg", tags=["html"]) - def favicon_light(): - return FileResponse("templates/favicon-light.svg") - - # HTML Response - @router.get("/{full_path:path}", response_class=HTMLResponse, tags=["html"]) - def index(request: Request): - context = {"request": request} - return templates.TemplateResponse("index.html", context) - -else: - - @router.get("/", status_code=302, tags=["html"]) - def index(): - return RedirectResponse("/docs") diff --git a/docs/wiki b/docs/wiki index 519e381e..d0bb98f0 160000 --- a/docs/wiki +++ b/docs/wiki @@ -1 +1 @@ -Subproject commit 519e381e8a1add62e76a39181ee61bad02816035 +Subproject commit d0bb98f004fb292519dd56c42238ecb2f034eac9 diff --git a/webui/pnpm-lock.yaml b/webui/pnpm-lock.yaml index 5608bc25..c8904dd0 100644 --- a/webui/pnpm-lock.yaml +++ b/webui/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '6.1' settings: autoInstallPeers: true