fix optional package materia-frontend
This commit is contained in:
parent
6ad7c29a48
commit
727f1b51ee
@ -69,8 +69,8 @@ includes = ["src/materia"]
|
||||
|
||||
[tool.pdm.scripts]
|
||||
start.cmd = "python ./src/materia/main.py {args:start --app-mode development --log-level debug}"
|
||||
upgrade.cmd = "alembic -c ./src/materia/alembic.ini upgrade {args:head}"
|
||||
downgrade.shell = "alembic -c ./src/materia/alembic.ini downgrade {args:base}"
|
||||
upgrade.cmd = "alembic upgrade {args:head}"
|
||||
downgrade.cmd = "alembic downgrade {args:base}"
|
||||
rev.cmd = "alembic revision {args:--autogenerate}"
|
||||
rm-revs.shell = "rm -v ./src/materia/models/migrations/versions/*.py"
|
||||
|
||||
|
@ -66,6 +66,13 @@ def make_lifespan(config: Config, logger: Logger):
|
||||
|
||||
|
||||
def make_application(config: Config, logger: Logger):
|
||||
try:
|
||||
import materia_frontend
|
||||
except ModuleNotFoundError:
|
||||
logger.warning(
|
||||
"`materia_frontend` is not installed. No user interface will be served."
|
||||
)
|
||||
|
||||
app = FastAPI(
|
||||
title="materia",
|
||||
version="0.1.0",
|
||||
|
@ -1,5 +1,4 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status, Response
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from PIL import Image
|
||||
import io
|
||||
from pathlib import Path
|
||||
@ -7,7 +6,6 @@ import mimetypes
|
||||
|
||||
from materia.routers import middleware
|
||||
from materia.config import Config
|
||||
import materia_frontend
|
||||
|
||||
router = APIRouter(tags=["resources"], prefix="/resources")
|
||||
|
||||
@ -41,16 +39,22 @@ async def avatar(
|
||||
return Response(content=buffer.getvalue(), media_type=Image.MIME[format])
|
||||
|
||||
|
||||
@router.get("/assets/{filename}")
|
||||
async def assets(filename: str):
|
||||
path = Path(materia_frontend.__path__[0]).joinpath(
|
||||
"dist", "resources", "assets", filename
|
||||
)
|
||||
try:
|
||||
import materia_frontend
|
||||
except ModuleNotFoundError:
|
||||
pass
|
||||
else:
|
||||
|
||||
if not path.exists():
|
||||
return Response(status_code=status.HTTP_404_NOT_FOUND)
|
||||
@router.get("/assets/{filename}")
|
||||
async def assets(filename: str):
|
||||
path = Path(materia_frontend.__path__[0]).joinpath(
|
||||
"dist", "resources", "assets", filename
|
||||
)
|
||||
|
||||
content = path.read_bytes()
|
||||
mime = mimetypes.guess_type(path)[0]
|
||||
if not path.exists():
|
||||
return Response(status_code=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
return Response(content, media_type=mime)
|
||||
content = path.read_bytes()
|
||||
mime = mimetypes.guess_type(path)[0]
|
||||
|
||||
return Response(content, media_type=mime)
|
||||
|
@ -2,13 +2,19 @@ from pathlib import Path
|
||||
from fastapi import APIRouter, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
import materia_frontend
|
||||
|
||||
|
||||
router = APIRouter(tags=["root"])
|
||||
templates = Jinja2Templates(directory=Path(materia_frontend.__path__[0]) / "dist")
|
||||
|
||||
try:
|
||||
import materia_frontend
|
||||
except ModuleNotFoundError:
|
||||
pass
|
||||
else:
|
||||
|
||||
@router.get("/{spa:path}", response_class=HTMLResponse)
|
||||
async def root(request: Request):
|
||||
return templates.TemplateResponse("base.html", {"request": request, "view": "app"})
|
||||
templates = Jinja2Templates(directory=Path(materia_frontend.__path__[0]) / "dist")
|
||||
|
||||
@router.get("/{spa:path}", response_class=HTMLResponse)
|
||||
async def root(request: Request):
|
||||
return templates.TemplateResponse(
|
||||
"base.html", {"request": request, "view": "app"}
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user