Defer loading of profile pic

This commit is contained in:
Peter Stockings
2026-03-10 19:34:37 +11:00
parent 808143f92b
commit 5b43bca7ca
6 changed files with 60 additions and 33 deletions

View File

@@ -245,15 +245,21 @@ def prepare_graph_data(readings):
def calculate_progress_badges(user_id, user_tz):
"""Generate badges based on user activity and milestones using optimized queries."""
now_local = datetime.now(user_tz).date()
badges = []
total_readings = Reading.query.filter_by(user_id=user_id).count()
if total_readings == 0:
return badges
return []
# Fetch only timestamps (highly optimized compared to fetching full objects)
timestamps = db.session.query(Reading.timestamp).filter(Reading.user_id == user_id).order_by(Reading.timestamp.desc()).all()
return _compute_badges(total_readings, timestamps, user_tz)
def _compute_badges(total_readings, timestamps, user_tz, now_local=None):
if now_local is None:
now_local = datetime.now(user_tz).date()
badges = []
if total_readings == 0:
return badges
streak_count = 0
if timestamps:
@@ -285,7 +291,7 @@ def calculate_progress_badges(user_id, user_tz):
if streak_count >= 30:
badges.append("Monthly Streak")
last_7_readings = db.session.query(Reading.timestamp).filter(Reading.user_id == user_id).order_by(Reading.timestamp.desc()).limit(7).all()
last_7_readings = timestamps[:7]
if len(last_7_readings) == 7:
if all(5 <= utc.localize(ts).astimezone(user_tz).hour < 12 for (ts,) in last_7_readings):
badges.append("Morning Riser: Logged Readings Every Morning for a Week")