- Add AdminUser role field (admin/submitter) - User management in admin panel - Public joke submission API (no auth required) - Document submission methods for external workers Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
"""
|
|
公开提交流程 - 供外部用户(submitter)使用。
|
|
无后台管理权限,仅能提交笑话到 pending 状态。
|
|
"""
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from pydantic import BaseModel
|
|
|
|
from app.database import get_db
|
|
from app.models.joke import Joke
|
|
|
|
router = APIRouter(tags=["笑话提交"])
|
|
|
|
|
|
class JokeSubmit(BaseModel):
|
|
"""笑话提交"""
|
|
title: str
|
|
content: str
|
|
|
|
|
|
class JokeBatchSubmit(BaseModel):
|
|
"""批量提交"""
|
|
jokes: list[JokeSubmit]
|
|
|
|
|
|
@router.post("/submit", response_model=dict)
|
|
def submit_joke(data: JokeSubmit, db: Session = Depends(get_db)):
|
|
"""公开接口:提交单条笑话(自动进入待审核状态)"""
|
|
joke = Joke(
|
|
title=data.title,
|
|
content=data.content,
|
|
status="pending",
|
|
)
|
|
db.add(joke)
|
|
db.commit()
|
|
db.refresh(joke)
|
|
return {
|
|
"success": True,
|
|
"id": joke.id,
|
|
"message": f"已提交,ID: {joke.id}"
|
|
}
|
|
|
|
|
|
@router.post("/submit/batch", response_model=dict)
|
|
def submit_jokes_batch(data: JokeBatchSubmit, db: Session = Depends(get_db)):
|
|
"""公开接口:批量提交笑话"""
|
|
added = []
|
|
for item in data.jokes:
|
|
joke = Joke(
|
|
title=item.title,
|
|
content=item.content,
|
|
status="pending",
|
|
)
|
|
db.add(joke)
|
|
added.append(item.title)
|
|
|
|
db.commit()
|
|
return {
|
|
"success": True,
|
|
"count": len(added),
|
|
"message": f"已提交 {len(added)} 条笑话"
|
|
} |