62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.staticfiles import StaticFiles
|
|
from api.lifespan import app_lifespan
|
|
from api.middlewares import UserConfigEnvUpdateMiddleware
|
|
from api.v1.ppt.router import API_V1_PPT_ROUTER
|
|
from utils.asset_directory_utils import get_exports_directory, get_images_directory, get_uploads_directory
|
|
import os
|
|
from utils.get_env import get_app_data_directory_env
|
|
# Import models to ensure they are registered with SQLModel
|
|
from models.sql.presentation_layout_code import PresentationLayoutCodeModel
|
|
|
|
|
|
app = FastAPI(lifespan=app_lifespan)
|
|
|
|
|
|
# Routers
|
|
app.include_router(API_V1_PPT_ROUTER)
|
|
|
|
# Helper function to get fonts directory
|
|
def get_fonts_directory() -> str:
|
|
"""Get the fonts directory path, create if it doesn't exist"""
|
|
app_data_dir = get_app_data_directory_env() or "/tmp/presenton"
|
|
fonts_dir = os.path.join(app_data_dir, "fonts")
|
|
os.makedirs(fonts_dir, exist_ok=True)
|
|
return fonts_dir
|
|
|
|
# Static files
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
app.mount(
|
|
"/app_data/images",
|
|
StaticFiles(directory=get_images_directory()),
|
|
name="app_data/images",
|
|
)
|
|
app.mount(
|
|
"/app_data/exports",
|
|
StaticFiles(directory=get_exports_directory()),
|
|
name="app_data/exports",
|
|
)
|
|
app.mount(
|
|
"/app_data/uploads",
|
|
StaticFiles(directory=get_uploads_directory()),
|
|
name="app_data/uploads",
|
|
)
|
|
app.mount(
|
|
"/app_data/fonts",
|
|
StaticFiles(directory=get_fonts_directory()),
|
|
name="app_data/fonts",
|
|
)
|
|
|
|
|
|
# Middlewares
|
|
origins = ["*"]
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.add_middleware(UserConfigEnvUpdateMiddleware)
|