Add content to shop page

This commit is contained in:
2025-10-29 09:39:42 +01:00
parent 8fd8b710fb
commit bd2f7b286e
14 changed files with 169 additions and 56 deletions

View File

@@ -1,32 +1,13 @@
import os
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi import Depends, FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from sqlalchemy.orm import Session
from allmende_payment_system.database import SessionLocal, ensure_user
async def get_user(request: Request) -> dict:
if username := os.environ.get("APS_username", None):
return {
"username": username,
"display_name": os.environ.get("APS_display_name", "Missing Display Name"),
}
if "ynh_user" not in request.headers:
raise HTTPException(status_code=401, detail="Missing ynh_user header")
return {"username": request.headers["ynh_user"]}
UserDep = Annotated[dict, Depends(get_user)]
from allmende_payment_system.api import root_router
from allmende_payment_system.api.dependencies import get_user
from allmende_payment_system.api.shop import shop_router
app = FastAPI(dependencies=[Depends(get_user)])
templates = Jinja2Templates(directory="src/allmende_payment_system/templates")
app.mount(
"/static",
StaticFiles(directory="src/allmende_payment_system/static"),
@@ -34,26 +15,5 @@ app.mount(
)
def get_session() -> Session:
db = SessionLocal()
try:
yield db
finally:
db.close()
SessionDep = Annotated[Session, Depends(get_session)]
@app.get("/")
async def landing_page(request: Request, user_info: UserDep, session: SessionDep):
user = ensure_user(user_info, session)
print(f"User {user.username} ({user.display_name}) accessed landing page")
transactions = []
for account in user.accounts:
transactions += account.transactions
transactions = sorted(transactions, key=lambda t: t.timestamp)
return templates.TemplateResponse(
"index.html.jinja",
context={"request": request, "user": user, "transactions": transactions},
)
app.include_router(root_router)
app.include_router(shop_router)