diff --git a/devplacepy/main.py b/devplacepy/main.py index dcaa7787..14c17e70 100644 --- a/devplacepy/main.py +++ b/devplacepy/main.py @@ -44,6 +44,7 @@ from devplacepy.templating import templates, jinja_unread_count from devplacepy.cache import TTLCache from devplacepy.responses import respond, wants_json, json_error from devplacepy.schemas import LandingOut, ValidationErrorOut +from devplacepy.attachments import get_attachments_batch from fastapi.responses import JSONResponse from devplacepy.utils import get_current_user, time_ago, safe_next, client_ip from devplacepy.seo import base_seo_context, site_url, website_schema @@ -671,6 +672,7 @@ def _landing_recent_posts(blocked): authors = get_users_by_uids(author_uids) comment_counts = get_comment_counts_by_post_uids(post_uids) upvotes, downvotes = get_vote_counts(post_uids) + attachments_map = get_attachments_batch("post", post_uids) for p in raw_posts: posts.append( { @@ -680,6 +682,7 @@ def _landing_recent_posts(blocked): "comment_count": comment_counts.get(p["uid"], 0), "stars": upvotes.get(p["uid"], 0) - downvotes.get(p["uid"], 0), "slug": p.get("slug", "") or p["uid"], + "attachments": attachments_map.get(p["uid"], []), } ) if not blocked: diff --git a/devplacepy/routers/profile/index.py b/devplacepy/routers/profile/index.py index d4e8fc4c..f4bc1b1b 100644 --- a/devplacepy/routers/profile/index.py +++ b/devplacepy/routers/profile/index.py @@ -7,7 +7,6 @@ from devplacepy.models import ProfileForm from fastapi.responses import HTMLResponse, JSONResponse from devplacepy.database import ( get_table, - db, get_customization_prefs, get_notification_prefs, get_user_stars, @@ -48,6 +47,7 @@ from devplacepy.utils import ( ) from devplacepy.responses import respond, action_result, wants_json from devplacepy.schemas import ProfileOut +from devplacepy.attachments import get_attachments_batch from devplacepy.avatar import avatar_url, avatar_seed from devplacepy.seo import ( base_seo_context, @@ -188,8 +188,10 @@ async def profile_page( else set() ) polls_map = get_polls_by_post_uids(post_uids, current_user) + attachments_map = get_attachments_batch("post", post_uids) for item in posts: uid = item["post"]["uid"] + item["attachments"] = attachments_map.get(uid, []) item["reactions"] = reactions_map.get(uid, {"counts": {}, "mine": []}) item["bookmarked"] = uid in bookmark_set item["poll"] = polls_map.get(uid) diff --git a/devplacepy/schemas/auth.py b/devplacepy/schemas/auth.py index 52ab7bff..58a0d977 100644 --- a/devplacepy/schemas/auth.py +++ b/devplacepy/schemas/auth.py @@ -5,7 +5,7 @@ from __future__ import annotations from typing import Any, Optional from devplacepy.schemas.base import _Out -from devplacepy.schemas.content import UserOut +from devplacepy.schemas.content import AttachmentOut, UserOut class AuthPageOut(_Out): @@ -38,6 +38,7 @@ class LandingPostOut(_Out): comment_count: int = 0 stars: int = 0 slug: str = "" + attachments: list[AttachmentOut] = [] class TrendingTopicOut(_Out):