From: Chris Fulljames Date: Fri, 4 Jul 2025 01:48:12 +0000 (-0400) Subject: Allow users to download their own songs X-Git-Url: https://littlesong.place/gitweb/?a=commitdiff_plain;h=a9df8a9160c3569ef4e3134a54efe75bb7211fd1;p=littlesongplace.git Allow users to download their own songs --- diff --git a/src/littlesongplace/songs.py b/src/littlesongplace/songs.py index a8c25f8..fbb7ccc 100644 --- a/src/littlesongplace/songs.py +++ b/src/littlesongplace/songs.py @@ -548,17 +548,22 @@ def delete_song(songid): @bp.get("/song//") def song(userid, songid): - if request.args.get("action", None) == "view": + action = request.args.get("action", None) + if action in ["view", "download"]: try: song = by_id(songid) if song.userid != userid: abort(404) - return render_template( - "song.html", - songs=[song], - song=song, - **users.get_user_colors(userid)) + if action == "view": + return render_template( + "song.html", + songs=[song], + song=song, + **users.get_user_colors(userid)) + else: # download + return send_from_directory( + datadir.get_user_songs_path(userid), str(songid) + ".mp3", as_attachment=True, download_name=song.title + ".mp3") except ValueError: abort(404) else: diff --git a/src/littlesongplace/static/lsp_btn_download02.gif b/src/littlesongplace/static/lsp_btn_download02.gif new file mode 100644 index 0000000..9137bc8 Binary files /dev/null and b/src/littlesongplace/static/lsp_btn_download02.gif differ diff --git a/src/littlesongplace/static/nav.js b/src/littlesongplace/static/nav.js index 932430c..53ea655 100644 --- a/src/littlesongplace/static/nav.js +++ b/src/littlesongplace/static/nav.js @@ -8,7 +8,9 @@ document.addEventListener("DOMContentLoaded", async (e) => { // Handle link clicks with AJAX document.querySelectorAll("a").forEach((anchor) => { anchor.removeEventListener("click", onLinkClick); - anchor.addEventListener("click", onLinkClick); + if (!anchor.download) { + anchor.addEventListener("click", onLinkClick); + } }); // Handle form submissions with AJAX diff --git a/src/littlesongplace/templates/song.html b/src/littlesongplace/templates/song.html index 6e1e49f..85a4983 100644 --- a/src/littlesongplace/templates/song.html +++ b/src/littlesongplace/templates/song.html @@ -24,6 +24,7 @@ {% if session["userid"] == song.userid -%} + {%- endif %}