Files
bacchus/apps/backend/app/api/admin_settings.py
2025-09-28 19:13:01 +02:00

32 lines
1.2 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel, EmailStr
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.core.auth import requires_role, get_current_user
from app.models.config import Config # Key/Value Tabelle: key (pk), value (text)
router = APIRouter(prefix="/admin/settings", tags=["admin-settings"], dependencies=[Depends(requires_role("admin","manager"))])
class PaypalCfg(BaseModel):
paypal_me: str | None = None
paypal_receiver: EmailStr | None = None
@router.get("/paypal", response_model=PaypalCfg)
def get_paypal(db: Session = Depends(get_db)):
def get(key):
obj = db.query(Config).get(key)
return obj.value if obj else None
return PaypalCfg(
paypal_me=get("paypal_me") or None,
paypal_receiver=get("paypal_receiver") or None
)
@router.put("/paypal", response_model=PaypalCfg)
def put_paypal(cfg: PaypalCfg, db: Session = Depends(get_db), user=Depends(get_current_user)):
for k,v in [("paypal_me", cfg.paypal_me), ("paypal_receiver", cfg.paypal_receiver)]:
row = db.query(Config).get(k)
if row: row.value = v or ""
else: db.add(Config(key=k, value=v or ""))
db.commit()
return cfg