"""Gallery blueprint.""" from flask import Blueprint, Response, render_template, session from ..helpers import _api, login_required gallery_bp = Blueprint("gallery", __name__) @gallery_bp.get("/gallery") @login_required def index(): token = session["access_token"] uploads_resp = _api("GET", "/images/", token=token) uploads = uploads_resp.json() if uploads_resp.status_code == 200 else [] gen_images_resp = _api("GET", "/generate/images", token=token) generated_images = gen_images_resp.json( ) if gen_images_resp.status_code == 200 else [] videos_resp = _api("GET", "/generate/videos", token=token) videos = videos_resp.json() if videos_resp.status_code == 200 else [] 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( "gallery.html", uploads=uploads, generated_images=generated_images, pending_videos=pending_videos, completed_videos=completed_videos, ) @gallery_bp.get("/gallery/image/") @login_required def image_detail(image_id: str): token = session["access_token"] resp = _api("GET", f"/generate/images/{image_id}", token=token) image = resp.json() if resp.status_code == 200 else None return render_template("image_detail.html", image=image) @gallery_bp.get("/gallery/video/") @login_required def video_detail(video_id: str): token = session["access_token"] resp = _api("GET", f"/generate/videos/{video_id}", token=token) video = resp.json() if resp.status_code == 200 else None return render_template("video_detail.html", video=video) @gallery_bp.get("/gallery/upload/") @login_required def upload_detail(image_id: str): token = session["access_token"] resp = _api("GET", f"/images/{image_id}", token=token) image = resp.json() if resp.status_code == 200 else None return render_template("upload_detail.html", image=image) @gallery_bp.get("/images//file") @login_required def serve_uploaded_image(image_id: str): resp = _api("GET", f"/images/{image_id}/file", token=session["access_token"]) if resp.status_code != 200: return Response("Not found", status=404) return Response( resp.content, status=200, content_type=resp.headers.get("content-type", "image/jpeg"), )