From 7168147fa96c109e4fb83a7b7fa5e7af3d1714cc Mon Sep 17 00:00:00 2001 From: Chris Fulljames Date: Sun, 13 Jul 2025 14:25:52 -0400 Subject: [PATCH] Group songs into blocks on home page --- src/littlesongplace/__init__.py | 13 +++++++++-- src/littlesongplace/static/styles.css | 14 +++++++++++ src/littlesongplace/templates/index.html | 23 ++++++++++++++++++- .../templates/song-macros.html | 13 +++++++---- 4 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/littlesongplace/__init__.py b/src/littlesongplace/__init__.py index 5754392..57b08c0 100644 --- a/src/littlesongplace/__init__.py +++ b/src/littlesongplace/__init__.py @@ -74,11 +74,20 @@ def index(): all_events.extend(j.events) ongoing_events, upcoming_events, _, _ = jams._sort_events(all_events) - page_songs = songs.get_latest(50) + # Group songs by userid + page_songs = songs.get_latest(100) + songs_by_user = [] + prev_song_user = None + for song in page_songs: + if song.userid != prev_song_user: + songs_by_user.append([]) + prev_song_user = song.userid + songs_by_user[-1].append(song) + return render_template( "index.html", users=all_users, - songs=page_songs, + songs_by_user=songs_by_user, page_title=title, ongoing_events=ongoing_events, upcoming_events=upcoming_events) diff --git a/src/littlesongplace/static/styles.css b/src/littlesongplace/static/styles.css index 5ac1dfe..082cdf9 100644 --- a/src/littlesongplace/static/styles.css +++ b/src/littlesongplace/static/styles.css @@ -116,6 +116,11 @@ input[type=text], input[type=password], input[type=url], input[type=datetime-loc padding: 8px; } +.subtle { + padding: 2px 6px; + font-size: 0.8em; +} + select { border: none; background-color: var(--purple); @@ -442,6 +447,15 @@ input[type=file] { font-size: 12px; } +/* Upload block (w/ song list) on home page */ +.upload-block { + box-shadow: 2px 2px 0px 0px; + border: 1px solid var(--black); + border-radius: var(--radius); + padding: 10px; + margin: 8px 0px; +} + /* Song Entry in Song List */ .song-list-controls { padding-bottom: 5px; diff --git a/src/littlesongplace/templates/index.html b/src/littlesongplace/templates/index.html index 1fc7d0c..b53aeef 100644 --- a/src/littlesongplace/templates/index.html +++ b/src/littlesongplace/templates/index.html @@ -34,6 +34,27 @@

hot new tunes

{%- from "song-macros.html" import song_list %} -{{ song_list(songs, current_user_playlists) }} +{%- for songs in songs_by_user %} +
+ {{ songs[0].username }} uploaded + {% if songs|length == 1 -%} + a song + {% else %} + {{ songs|length }} songs + + {%- endif %} +
+ {{ song_list(songs, current_user_playlists, show_first_only=True) }} +
+
+{% endfor -%} + + {% endblock %} diff --git a/src/littlesongplace/templates/song-macros.html b/src/littlesongplace/templates/song-macros.html index 0b8ddf8..eaa0377 100644 --- a/src/littlesongplace/templates/song-macros.html +++ b/src/littlesongplace/templates/song-macros.html @@ -76,9 +76,9 @@ {% endmacro %} -{% macro song_list_entry(song, current_user_playlists) -%} +{% macro song_list_entry(song, current_user_playlists, hidden=False) -%} {%- if not (song.hidden and session['userid'] != song.userid) -%} -
+