fix optional package materia-frontend

This commit is contained in:
L-Nafaryus 2024-07-31 18:04:34 +05:00
parent 6ad7c29a48
commit 727f1b51ee
Signed by: L-Nafaryus
GPG Key ID: 553C97999B363D38
4 changed files with 37 additions and 20 deletions

View File

@ -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"

View File

@ -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",

View File

@ -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,8 +39,14 @@ async def avatar(
return Response(content=buffer.getvalue(), media_type=Image.MIME[format])
@router.get("/assets/{filename}")
async def assets(filename: str):
try:
import materia_frontend
except ModuleNotFoundError:
pass
else:
@router.get("/assets/{filename}")
async def assets(filename: str):
path = Path(materia_frontend.__path__[0]).joinpath(
"dist", "resources", "assets", filename
)

View File

@ -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"}
)