First steps with the new registration app

This commit is contained in:
2025-09-09 21:06:53 +02:00
parent c40bd5fceb
commit ada1a45df4
52 changed files with 59724 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
from contextlib import asynccontextmanager
from typing import Union, Annotated
from models import Event
from fastapi import FastAPI, Request, Depends
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from sqlmodel import Field, Session, SQLModel, create_engine, select
sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"
connect_args = {"check_same_thread": False}
engine = create_engine(sqlite_url, connect_args=connect_args)
def get_session():
with Session(engine) as session:
yield session
def create_db_and_tables():
SQLModel.metadata.create_all(engine)
@asynccontextmanager
async def on_startup(app_: FastAPI):
create_db_and_tables()
yield
app = FastAPI(lifespan=on_startup)
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
SessionDep = Annotated[Session, Depends(get_session)]
@app.get("/")
async def read_root(request: Request, session: SessionDep):
statement = select(Event).order_by(Event.event_time)
events = session.exec(statement).all()
return templates.TemplateResponse(
request=request, name="index.html", context={"events": events}
)
@app.get("/event/{event_id}")
async def read_event(request: Request, event_id: int, session: SessionDep):
statement = select(Event).where(Event.id == event_id)
event = session.exec(statement).one()
return templates.TemplateResponse(
request=request, name="event.html", context={"event": event}
)