from fastapi import FastAPI, Request from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from app.api.main import api_router from app.core.config import settings from app.core.db import init_db, engine from sqlmodel import Session from app.core.utils import is_registration_open with Session(engine) as session: init_db(session) app = FastAPI( title=settings.PROJECT_NAME, openapi_url=f"{settings.API_V1_STR}/openapi.json" ) templates = Jinja2Templates(directory="app/templates") @api_router.get("/") def index(request: Request): reg_open, not_before, not_after = is_registration_open() if reg_open: return templates.TemplateResponse( request=request, name="registration-open.html", context={} ) elif not_before: return templates.TemplateResponse( request=request, name="registration-closed.html", context={ "not_before": settings.NOT_BEFORE, "not_after": settings.NOT_AFTER, }, ) elif not_after: return templates.TemplateResponse( request=request, name="registration-not-open.html", context={ "not_before": settings.NOT_BEFORE, "not_after": settings.NOT_AFTER, }, ) @api_router.get("/success.html") def success(request: Request): return templates.TemplateResponse( request=request, name="registration-success.html", context={ "not_before": settings.NOT_BEFORE, "not_after": settings.NOT_AFTER, }, ) app.include_router(api_router, prefix=settings.API_V1_STR) app.mount("/static", StaticFiles(directory="app/static"), name="static")