From: Chris Fulljames Date: Mon, 19 Jan 2026 21:07:38 +0000 (-0500) Subject: Cancel import for other song update methods X-Git-Url: https://littlesong.place/gitweb/?a=commitdiff_plain;h=e3e2ab13a34652c583820bfe7ffc4f73b1eb1b42;p=littlesongplace.git Cancel import for other song update methods --- diff --git a/src/littlesongplace/songs.py b/src/littlesongplace/songs.py index a0ec845..4adb2cb 100644 --- a/src/littlesongplace/songs.py +++ b/src/littlesongplace/songs.py @@ -335,6 +335,11 @@ def update_song(): error = False if file or url: + + # Clear pending dreams import + if song_data["queueid"] is not None: + dreams_importer.delete_from_queue(song_data["queueid"]) + with tempfile.NamedTemporaryFile(delete=False) as tmp_file: passed = convert_song(tmp_file, file, url, upload_type) @@ -377,8 +382,6 @@ def update_song(): [collab, songid]) if upload_type == "dreams" and url: - if song_data["queueid"] is not None: - dreams_importer.delete_from_queue(song_data["queueid"]) duration = duration_in_seconds(song_duration) dreams_importer.add_to_queue(songid, url, duration) diff --git a/test/test_dreams_importer.py b/test/test_dreams_importer.py index 5f46c54..c272c16 100644 --- a/test/test_dreams_importer.py +++ b/test/test_dreams_importer.py @@ -132,3 +132,23 @@ def test_update_queued_song(client, user): assert response.json["next"]["indreamsurl"] == TEST_URL + "_new" assert response.json["next"]["songid"] == 1 +def test_import_canceled_by_file(client, user): + upload_song( + client, b"Queued for import from Dreams", + upload_type="dreams", + song_url=TEST_URL) + + # Initial queue position + response = client.get(f"/users/user") + assert b"[Hidden]" in response.data + assert b"[Queue Pos: 1]" in response.data + + upload_song(client, b"Success", songid=1) + + # Queue gone now that file was used + response = client.get(f"/users/user") + assert b"[Hidden]" not in response.data + assert b"[Queue Pos: 1]" not in response.data + response = client.get("/dreams-importer/next-in-queue") + assert response.json["next"] is None +