32 lines
1.2 KiB
Python
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
|