f43b13f625
- Created `__init__.py` for blueprint registration. - Implemented `auth.py` for user authentication (login, register, logout). - Added `admin.py` for admin functionalities (user management, stats). - Developed `dashboard.py` for user dashboard displaying user info and generated content. - Created `gallery.py` for managing and displaying images and videos. - Implemented `generate.py` for text, image, and video generation functionalities. - Added `profile.py` for user profile management. - Updated templates to reflect new route structures and improve navigation.
75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
"""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/<image_id>")
|
|
@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/<video_id>")
|
|
@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/<image_id>")
|
|
@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/<image_id>/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"),
|
|
) |