]> littlesong.place Git - littlesongplace.git/commitdiff
Jam event tweaks
authorChris Fulljames <christianfulljames@gmail.com>
Sat, 19 Apr 2025 17:22:14 +0000 (13:22 -0400)
committerChris Fulljames <christianfulljames@gmail.com>
Sat, 19 Apr 2025 17:22:14 +0000 (13:22 -0400)
src/littlesongplace/__init__.py
src/littlesongplace/activity.py
src/littlesongplace/jams.py
src/littlesongplace/templates/index.html
src/littlesongplace/templates/jam-event-list.html
src/littlesongplace/templates/jam-event.html
src/littlesongplace/templates/jam.html
test/test_activity.py

index 9e4e366c92afa7f83ba37ff61a86899416809f62..5754392307871a35d5af0d0c446563cd3e243ec8 100644 (file)
@@ -63,8 +63,25 @@ def index():
     titles, weights = zip(*titles)
     title = random.choices(titles, weights)[0]
 
+    rows = db.query(
+            """
+            SELECT * FROM jams
+            INNER JOIN users ON jams.ownerid = users.userid
+            """)
+    all_jams = [jams.Jam.from_row(r) for r in rows]
+    all_events = []
+    for j in all_jams:
+        all_events.extend(j.events)
+    ongoing_events, upcoming_events, _, _ = jams._sort_events(all_events)
+
     page_songs = songs.get_latest(50)
-    return render_template("index.html", users=all_users, songs=page_songs, page_title=title)
+    return render_template(
+            "index.html",
+            users=all_users,
+            songs=page_songs,
+            page_title=title,
+            ongoing_events=ongoing_events,
+            upcoming_events=upcoming_events)
 
 @app.get("/site-news")
 def site_news():
index 4c847888080b11d7ae6efe4c3a418a898ba49301..eab6d3a0a6a11603173024eb18650da0a5e29364 100644 (file)
@@ -70,9 +70,12 @@ def activity():
                     INNER JOIN users ON jams.ownerid = users.userid
                     WHERE jam_events.threadid = ?
                     """, [comment["threadid"]], one=True)
+            # TODO: This is duplicated in the JamEvent class
+            startdate = datetime.fromisoformat(jam_event["startdate"]) if jam_event["startdate"] else None
+            hidden = ((startdate is None) or startdate > datetime.now(timezone.utc))
             comment["eventid"] = jam_event["eventid"]
             comment["jamid"] = jam_event["jamid"]
-            comment["title"] = jam_event["title"]
+            comment["title"] = "[Upcoming Event]" if hidden else jam_event["title"]
             comment["content_userid"] = jam_event["userid"]
             comment["content_username"] = jam_event["username"]
 
index 391a9fd5b345997435f98d7b3b89236190331880..e4af38015976cf7e2a05b6a5abf5513b9febcbff 100644 (file)
@@ -4,7 +4,7 @@ from datetime import datetime, timezone
 
 from flask import abort, Blueprint, g, redirect, render_template, request, url_for
 
-from . import auth, comments, db, songs
+from . import auth, comments, db, jams, songs
 from .sanitize import sanitize_user_text
 
 bp = Blueprint("jams", __name__, url_prefix="/jams")
index b30de19731b9a6410d3f794f3f8df2524ffcffbd..4339084338369a8a6aa5c1e9201337fa64604108 100644 (file)
@@ -9,6 +9,13 @@
 ðŸŽ¶ Welcome to a little song place.  Make music, and share it with friends! ðŸŽµ
 </p>
 
+{% if ongoing_events or upcoming_events %}
+<h2>Jams</h2>
+{% from "jam-event-list.html" import jam_event_list %}
+{{ jam_event_list("Ongoing Events", ongoing_events, "Ends", "end") }}
+{{ jam_event_list("Upcoming Events", upcoming_events, "Starts", "start") }}
+{% endif %}
+
 <h2>Humans</h2>
 <p>
 Check out the music and profiles of the fine folks below!
index 148c5e56e9140bf244c7df04c80ae3f63308c73c..cf7716fa4881f73fcf11140bd53cf965aa76b73d 100644 (file)
@@ -5,7 +5,9 @@
     {% for event in events %}
     <li class="jam-event-list-entry">
         {% if event.hidden -%}
-        <span class="visibility-indicator">[Upcoming Event]</span>
+        <span class="visibility-indicator">
+            <a href="/jams/{{ event.jamid }}/events/{{ event.eventid }}">[Upcoming Event]</a>
+        </span>
         {%- else -%}
         <span class="jam-event-list-title">
             <a href="/jams/{{ event.jamid }}/events/{{ event.eventid }}">{{ event.title }}</a>
index 76d5f8c4ae8a54849191a860d5ce5589e1de0cce..b9988f90a15ce6900486f6f37b72912e35ab9771 100644 (file)
@@ -44,7 +44,7 @@
     </div>
     <br/>
     <div>
-    {{ jam.description }}
+    {{ (jam.description.replace("\n", "<br>"))|safe }}
     </div>
 
     {% if not event.hidden -%}
index 6c602247fbefe4fa35d25ed6ea72321528df217c..1eca7094b096da7e8eff2d4153b3902d75e53e01 100644 (file)
@@ -22,7 +22,7 @@
 
     <h2>Description</h2>
     <div>
-    {{ jam.description|safe }}
+    {{ (jam.description.replace("\n", "<br>"))|safe }}
     </div>
 
     <h2>Events</h2>
index 6335843e73e1038ff5eea6d44a7b8adcbb18b686..0f89d3899d48a6c3dc3e97c57878a2c772031505 100644 (file)
@@ -27,7 +27,7 @@ def test_activity_for_comment_on_jam_event(client, user, event):
 
     client.post("/login", data={"username": "user", "password": "password"})
     response = client.get("/activity")
-    assert b"New Event" in response.data, response.data.decode()
+    assert b"[Upcoming Event]" in response.data, response.data.decode()
     assert b"hey cool event" in response.data, response.data.decode()
 
 def test_activity_for_reply_to_comment(client):