Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends | |
| from sqlalchemy.orm import Session | |
| from app.database import get_db | |
| from app import models | |
| from app.tasks import task_deliver | |
| from app.config import settings | |
| router = APIRouter(prefix="/deliver", tags=["deliver"]) | |
| async def deliver_now(draft_id: int, db: Session = Depends(get_db)): | |
| draft = db.get(models.Draft, draft_id) | |
| if not draft: | |
| return {"error": "not found"} | |
| if draft.status not in [models.DraftStatus.approved, models.DraftStatus.scheduled]: | |
| return {"error": f"status must be approved/scheduled, current={draft.status.value}"} | |
| if settings.CELERY_BROKER_URL: | |
| task_deliver.delay(draft.id) | |
| return {"ok": True, "queued": True} | |
| else: | |
| # inline for demo; real env should use worker | |
| res = task_deliver(draft.id) | |
| return {"ok": True, "queued": False, "result": res} | |