simple-web-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit abea906db879170557716b3a9724232601f98bbc
parent 4fcc162ce3ed226d56b59781bc5166fc716d7b24
Author: Silas Brack <silasbrack@gmail.com>
Date:   Sat,  4 Oct 2025 09:51:16 +0200

refactor: refactor main page

Diffstat:
Msrc/simple_web_app/app.py | 26++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/simple_web_app/app.py b/src/simple_web_app/app.py @@ -1,3 +1,4 @@ +import asyncio import contextlib import importlib.resources import logging @@ -102,16 +103,21 @@ async def show_home_page(request: Request): all_categories = await queries_basic.get_categories(request.state.conn, limit=20) - if category_id: - rows = await queries_basic.get_news_by_category(request.state.conn, category_id=category_id, limit=limit, offset=offset, max_published_time=current_time) - else: - rows = await queries_basic.get_news(request.state.conn, limit=limit, offset=offset, max_published_time=current_time) - news = [dict(row) for row in rows] - for new in news: - categories = await queries_basic.get_categories_for_news(request.state.conn, news_item_id=new["id"]) - new["categories"] = categories - published = datetime.datetime.strptime(new["published"], "%Y-%m-%dT%H:%M:%S.%f%z") - new["time_since_published"] = format_timedelta(datetime.datetime.now(tz=datetime.UTC) - published, "{days} days, {hours} hours ago") + rows = ( + await queries_basic.get_news_by_category(request.state.conn, category_id=category_id, limit=limit, offset=offset, max_published_time=current_time) + if category_id + else + await queries_basic.get_news(request.state.conn, limit=limit, offset=offset, max_published_time=current_time) + ) + categories = await asyncio.gather(*[queries_basic.get_categories_for_news(request.state.conn, news_item_id=row["id"]) for row in rows]) + + current_time_utc = datetime.datetime.now(tz=datetime.UTC) + def _get_time_since_published(published: str, current_time: datetime): + published = datetime.datetime.strptime(published, "%Y-%m-%dT%H:%M:%S.%f%z") + return format_timedelta(current_time - published, "{days} days, {hours} hours ago") + times_since_published = [_get_time_since_published(row["published"], current_time_utc) for row in rows] + + news = [{**row, "categories": c, "time_since_published": tsp} for row, c, tsp in zip(rows, categories, times_since_published, strict=True)] elapsed = time.time() - t0 logger.info({"event": "load_page", "page": "/home", "time_s": elapsed})