feat(thumb-backfill): /api/thumbnails/backfill endpoint — POST → 202 + celery_task_id
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,7 @@ def all_blueprints() -> list[Blueprint]:
|
|||||||
from .system_activity import system_activity_bp
|
from .system_activity import system_activity_bp
|
||||||
from .system_backup import system_backup_bp
|
from .system_backup import system_backup_bp
|
||||||
from .tags import tags_bp
|
from .tags import tags_bp
|
||||||
|
from .thumbnails import thumbnails_bp
|
||||||
return [
|
return [
|
||||||
api_bp,
|
api_bp,
|
||||||
attachments_bp,
|
attachments_bp,
|
||||||
@@ -58,6 +59,7 @@ def all_blueprints() -> list[Blueprint]:
|
|||||||
allowlist_bp,
|
allowlist_bp,
|
||||||
aliases_bp,
|
aliases_bp,
|
||||||
ml_admin_bp,
|
ml_admin_bp,
|
||||||
|
thumbnails_bp,
|
||||||
sources_bp,
|
sources_bp,
|
||||||
platforms_bp,
|
platforms_bp,
|
||||||
posts_bp,
|
posts_bp,
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
"""Thumbnail admin API: backfill trigger."""
|
||||||
|
|
||||||
|
from quart import Blueprint, jsonify
|
||||||
|
|
||||||
|
thumbnails_bp = Blueprint("thumbnails", __name__, url_prefix="/api/thumbnails")
|
||||||
|
|
||||||
|
|
||||||
|
@thumbnails_bp.route("/backfill", methods=["POST"])
|
||||||
|
async def trigger_backfill():
|
||||||
|
from ..tasks.thumbnail import backfill_thumbnails
|
||||||
|
|
||||||
|
r = backfill_thumbnails.delay()
|
||||||
|
return jsonify({"celery_task_id": r.id}), 202
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
from backend.app import create_app
|
||||||
|
from backend.app.celery_app import celery
|
||||||
|
|
||||||
|
pytestmark = pytest.mark.integration
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def eager():
|
||||||
|
celery.conf.task_always_eager = True
|
||||||
|
yield
|
||||||
|
celery.conf.task_always_eager = False
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
async def app():
|
||||||
|
return create_app()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
async def client(app):
|
||||||
|
async with app.test_client() as c:
|
||||||
|
yield c
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_trigger_thumbnail_backfill(client):
|
||||||
|
r = await client.post("/api/thumbnails/backfill")
|
||||||
|
assert r.status_code == 202
|
||||||
|
body = await r.get_json()
|
||||||
|
assert "celery_task_id" in body
|
||||||
Reference in New Issue
Block a user