]> littlesong.place Git - littlesongplace.git/commitdiff
Refactor duplicated song list HTML
authorChris Fulljames <christianfulljames@gmail.com>
Thu, 9 Jan 2025 12:20:30 +0000 (07:20 -0500)
committerChris Fulljames <christianfulljames@gmail.com>
Thu, 9 Jan 2025 12:20:30 +0000 (07:20 -0500)
main.py
templates/profile.html
templates/song-list.html [new file with mode: 0644]
templates/songs-by-tag.html
todo.txt

diff --git a/main.py b/main.py
index 579255239e25603634bfe503a9674ba92e62413c..24381002e5c4662cf6afce2ddf67ea8ef3f7e979 100644 (file)
--- a/main.py
+++ b/main.py
@@ -119,7 +119,7 @@ def users_profile(profile_username):
             "profile.html",
             name=profile_username,
             userid=profile_userid,
-            songs=songs)
+            song_list=render_template("song-list.html", songs=songs))
 
 @app.get("/edit-song")
 def edit_song():
index 4e029978be6abc0a9002fcd23fccf727663fa567..f439d34c8e02863836432c2b62706848082e73fb 100644 (file)
 <a href="/edit-song">Upload New Song</a>
 {% endif %}
 
-
-<!-- TODO: This is duplicated in songs-by-tag.html -->
-{% for song in songs %}
-<div class="song">
-    <!-- Song Title -->
-    <div class="song-title"><h3>{{ song.title }}</h3></div>
-
-    <!-- Owner-Specific Buttons (Edit/Delete) -->
-    {% if session["userid"] == userid %}
-    <div class="song-edit-button">
-    <a href="/edit-song?songid={{ song.songid }}">Edit</a>
-    </div>
-    <div class="song-delete-button">
-    <a href="/delete-song/{{ song.userid }}/{{ song.songid }}">Delete</a>
-    </div>
-    {% endif %}
-
-    <!-- Play Button -->
-    <audio src="/song/{{ song.userid }}/{{ song.songid }}" controls></audio>
-
-    <!-- Song Description -->
-    <div class="song-description">{{ song.description }}</div>
-
-    <!-- Song Tags -->
-    <div class="song-tags">
-        {% for tag in song.tags %}
-        <a href="/songs-by-tag/{{ tag }}">{{ tag }}</a>
-        {% endfor %}
-    </div>
-
-    <!-- Song Collaborators -->
-    <div class="song-collabs">
-        {% for collab in song.collaborators %}
-            {% if collab.startswith("@") %}
-            <a href="/users/{{ collab }}" class="collab-link">{{ collab }}</a>
-            {% else %}
-            <span class="collab-name">{{ collab }}</span>
-            {% endif %}
-        {% endfor %}
-    </div>
-</div>
-{% endfor %}
+{{ song_list|safe }}
 
 {% endblock %}
 
diff --git a/templates/song-list.html b/templates/song-list.html
new file mode 100644 (file)
index 0000000..1ee7d80
--- /dev/null
@@ -0,0 +1,40 @@
+{% for song in songs %}
+<div class="song">
+    <!-- Song Title -->
+    <div class="song-title"><h3>{{ song.title }}</h3></div>
+
+    <!-- Owner-Specific Buttons (Edit/Delete) -->
+    {% if session["userid"] == song.userid %}
+    <div class="song-edit-button">
+    <a href="/edit-song?songid={{ song.songid }}">Edit</a>
+    </div>
+    <div class="song-delete-button">
+    <a href="/delete-song/{{ song.userid }}/{{ song.songid }}">Delete</a>
+    </div>
+    {% endif %}
+
+    <!-- Play Button -->
+    <audio src="/song/{{ song.userid }}/{{ song.songid }}" controls></audio>
+
+    <!-- Song Description -->
+    <div class="song-description">{{ song.description }}</div>
+
+    <!-- Song Tags -->
+    <div class="song-tags">
+        {% for tag in song.tags %}
+        <a href="/songs-by-tag/{{ tag }}">{{ tag }}</a>
+        {% endfor %}
+    </div>
+
+    <!-- Song Collaborators -->
+    <div class="song-collabs">
+        {% for collab in song.collaborators %}
+            {% if collab.startswith("@") %}
+            <a href="/users/{{ collab }}" class="collab-link">{{ collab }}</a>
+            {% else %}
+            <span class="collab-name">{{ collab }}</span>
+            {% endif %}
+        {% endfor %}
+    </div>
+</div>
+{% endfor %}
index 7d67edbbfb04b880585ea70bd94b54dec41ac20f..341de24e4184ad8b9194a39c9110312c3f2a4b0a 100644 (file)
@@ -6,45 +6,6 @@
 
 <h1 class="tag-name">Songs tagged with '{{ tag }}'</h1>
 
-{% for song in songs %}
-<div class="song">
-    <!-- Song Title -->
-    <div class="song-title"><h3>{{ song.title }}</h3></div>
-
-    <!-- Owner-Specific Buttons (Edit/Delete) -->
-    {% if session["userid"] == userid %}
-    <div class="song-edit-button">
-    <a href="/edit-song?songid={{ song.songid }}">Edit</a>
-    </div>
-    <div class="song-delete-button">
-    <a href="/delete-song/{{ song.userid }}/{{ song.songid }}">Delete</a>
-    </div>
-    {% endif %}
-
-    <!-- Play Button -->
-    <audio src="/song/{{ song.userid }}/{{ song.songid }}" controls></audio>
-
-    <!-- Song Description -->
-    <div class="song-description">{{ song.description }}</div>
-
-    <!-- Song Tags -->
-    <div class="song-tags">
-        {% for tag in song.tags %}
-        <a href="/songs-by-tag/{{ tag }}">{{ tag }}</a>
-        {% endfor %}
-    </div>
-
-    <!-- Song Collaborators -->
-    <div class="song-collabs">
-        {% for collab in song.collaborators %}
-            {% if collab.startswith("@") %}
-            <a href="/users/{{ collab[1:] }}" class="collab-link">{{ collab }}</a>
-            {% else %}
-            <span class="collab-name">{{ collab }}</span>
-            {% endif %}
-        {% endfor %}
-    </div>
-</div>
-{% endfor %}
+{{ song_list|safe }}
 
 {% endblock %}
index 996604fcfa92b44109deb9033ae3ba3335da1523..4bbcb80ba2d981592187b373e4d2eacbca33efc3 100644 (file)
--- a/todo.txt
+++ b/todo.txt
@@ -3,6 +3,8 @@
 - delete user account
 - sort songs by upload timestamp
 
+- automated tests
+
 - javascript song player
 
 - admin account(s)