new init
This commit is contained in:
31
apps/backend/app/api/admin_settings.py
Normal file
31
apps/backend/app/api/admin_settings.py
Normal file
@@ -0,0 +1,31 @@
|
||||
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
|
Reference in New Issue
Block a user