feat: add admin video jobs management endpoints and UI for listing, cancelling, and purging video jobs

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-29 16:49:08 +02:00
parent cc96d26b08
commit bd77d4c43e
5 changed files with 295 additions and 5 deletions
+12 -4
View File
@@ -217,10 +217,11 @@ def dashboard():
images = img_resp.json() if img_resp.status_code == 200 else []
gen_resp = _api("GET", "/generate/images", token=token)
generated_images = gen_resp.json() if gen_resp.status_code == 200 else []
vid_resp = _api("GET", "/generate/videos", token=token)
videos = vid_resp.json() if vid_resp.status_code == 200 else []
pending_videos = [v for v in videos if v.get("status") not in ("completed", "failed")]
pending_videos = [v for v in videos if v.get(
"status") not in ("completed", "failed")]
completed_videos = [v for v in videos if v.get("status") == "completed"]
return render_template("dashboard.html", user=user, images=images,
@@ -418,7 +419,7 @@ def generate_video():
duration = int(
duration_raw) if duration_raw.strip().isdigit() else None
resolution = request.form.get("resolution", "").strip() or None
if mode == "image":
resp = _api("POST", "/generate/video/from-image", token=token, json={
"model": request.form.get("model", "").strip(),
@@ -436,7 +437,7 @@ def generate_video():
"duration_seconds": duration,
"resolution": resolution,
})
if resp.status_code == 200:
result = resp.json()
# On success, redirect to the detail page to monitor progress
@@ -506,6 +507,13 @@ def admin_models():
return render_template("admin/models.html")
@app.get("/admin/videos")
@admin_required
def admin_videos():
"""Show all video generation jobs across all users."""
return render_template("admin/videos.html")
# ── Profile ───────────────────────────────────────────────────────────────
@app.route("/users/profile", methods=["GET", "POST"])