]> littlesong.place Git - littlesongplace.git/commitdiff
Show event title on entry song details
authorChris Fulljames <christianfulljames@gmail.com>
Sun, 20 Apr 2025 13:09:47 +0000 (09:09 -0400)
committerChris Fulljames <christianfulljames@gmail.com>
Sun, 20 Apr 2025 13:09:47 +0000 (09:09 -0400)
src/littlesongplace/songs.py
src/littlesongplace/templates/song-macros.html
test/test_jams.py

index 5e4e021d0b5a455925f3267eba5d59925f1e58c3..110643cf1474c5e931cb3ec104ed5c02af15a641 100644 (file)
@@ -6,6 +6,7 @@ import subprocess
 import tempfile
 from datetime import datetime, timezone
 from dataclasses import dataclass
+from typing import Optional
 
 from flask import Blueprint, current_app, render_template, request, redirect, \
         session, abort, send_from_directory
@@ -31,6 +32,9 @@ class Song:
     collaborators: list[str]
     user_has_pfp: bool
     hidden: bool
+    eventid: Optional[int]
+    jamid: Optional[int]
+    event_title: Optional[str]
 
     def json(self):
         return json.dumps(vars(self))
@@ -177,14 +181,21 @@ def _from_db(query, args=()):
 
         # Song is hidden if it was submitted to an event that hasn't ended yet
         hidden = False
+        jamid = None
+        event_title = None
+
         if sd["eventid"]:
             event_row = db.query(
                     "SELECT * FROM jam_events WHERE eventid = ?",
                     [sd["eventid"]],
                     one=True)
-            if event_row and event_row["enddate"]:
-                enddate = datetime.fromisoformat(event_row["enddate"])
-                hidden = datetime.now(timezone.utc) < enddate
+            if event_row:
+                jamid = event_row["jamid"]
+                event_title = event_row["title"]
+                if event_row["enddate"]:
+                    enddate = datetime.fromisoformat(event_row["enddate"])
+                    hidden = datetime.now(timezone.utc) < enddate
+
 
         created = (
                 datetime.fromisoformat(sd["created"])
@@ -202,6 +213,9 @@ def _from_db(query, args=()):
             collaborators=song_collabs,
             user_has_pfp=users.user_has_pfp(sd["userid"]),
             hidden=hidden,
+            eventid=sd["eventid"],
+            jamid=jamid,
+            event_title=event_title,
         ))
     return songs
 
index 71db298b42970f73cf020b685114e4fad29e0111..f272529c97e8753156b91297712b4b5d0eb07d77 100644 (file)
     </div>
     {%- endif %}
 
+    {% if song.eventid %}
+    <div class="song-event">
+        Jam Event: <a href="/jams/{{ song.jamid }}/events/{{ song.eventid }}">{{ song.event_title }}</a>
+    </div>
+    {% endif %}
+
     <div class="song-date">
         Uploaded {{ song.created }}
     </div>
index f6393f2f364436bd908d988ef7ef2c1ad9f9fae2..c1ea34a53c0a1aa0047c5e51c926d9bd0b678cf4 100644 (file)
@@ -268,6 +268,10 @@ def test_submit_song_to_event(client, user, jam, event):
     response = client.get(f"/jams/{jam}/events/{event}")
     assert b"song title" in response.data, response.data.decode()
 
+    # Check for event title on song page
+    response = client.get(f"/song/1/1?action=view")
+    assert b"Event Title" in response.data, response.data.decode()
+
 def test_submitted_song_hidden_before_enddate(client, user, jam, event):
     client.post(
             f"/jams/{jam}/events/{event}/update",