Files

43 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, status
from pydantic import BaseModel
from sqlalchemy.orm import Session
from app.core.deps import require_staff
from app.db import get_db
from app.models.legal import LEGAL_PAGE_KEYS, LEGAL_PAGE_TITLES, admin_legal_page, save_legal_page
router = APIRouter(dependencies=[Depends(require_staff)])
class LegalPageWrite(BaseModel):
published: bool = False
bodyHtml: str = ""
@router.get("/legal")
def list_legal_pages(db: Session = Depends(get_db)) -> dict:
items = []
for key in LEGAL_PAGE_KEYS:
body = admin_legal_page(db, key)
if body is not None:
items.append(body)
return {"items": items}
@router.get("/legal/{page_key}")
def read_legal_page(page_key: str, db: Session = Depends(get_db)) -> dict:
body = admin_legal_page(db, page_key)
if body is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="合规页键不正确")
return body
@router.put("/legal/{page_key}")
def write_legal_page(page_key: str, body: LegalPageWrite, db: Session = Depends(get_db)) -> dict:
try:
save_legal_page(db, page_key, body.model_dump())
except ValueError as exc:
code = status.HTTP_404_NOT_FOUND if "不正确" in str(exc) else status.HTTP_400_BAD_REQUEST
raise HTTPException(status_code=code, detail=str(exc)) from exc
return {"ok": True, "title": LEGAL_PAGE_TITLES.get(page_key, page_key)}