Files
bwstudioandClaude Opus 4.8 aecf1f1f15 feat: add user role system and public joke submission API
- 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>
2026-06-07 12:48:35 +08:00

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)} 条笑话"
}