From 4845325612a9e24d6dc57af32c2cf1c74f2865d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Schieli?= <cschieli@gmail.com>
Date: Sun, 11 Oct 2020 16:14:58 +0200
Subject: [PATCH] Allow genre tags to be updated when rescanning files in-place

---
 api/funkwhale_api/music/tasks.py     | 2 ++
 api/tests/music/test_tasks.py        | 4 ++++
 changes/changelog.d/1246.enhancement | 1 +
 docs/admin/importing-music.rst       | 1 +
 4 files changed, 8 insertions(+)
 create mode 100644 changes/changelog.d/1246.enhancement

diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py
index fa8e695913..b01f68e5fa 100644
--- a/api/funkwhale_api/music/tasks.py
+++ b/api/funkwhale_api/music/tasks.py
@@ -937,6 +937,8 @@ def update_track_metadata(audio_metadata, track):
         if obj_updated_fields:
             obj.save(update_fields=obj_updated_fields)
 
+    tags_models.set_tags(track, *new_data.get("tags", []))
+
     if track.album and "album" in new_data and new_data["album"].get("cover_data"):
         common_utils.attach_file(
             track.album, "attachment_cover", new_data["album"].get("cover_data")
diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py
index 573f04f1f0..414bf95e73 100644
--- a/api/tests/music/test_tasks.py
+++ b/api/tests/music/test_tasks.py
@@ -1364,6 +1364,7 @@ def test_update_track_metadata(factories):
         "license": "Dummy license: http://creativecommons.org/licenses/by-sa/4.0/",
         "copyright": "Someone",
         "comment": "hello there",
+        "genre": "classical",
     }
     tasks.update_track_metadata(metadata.FakeMetadata(data), track)
 
@@ -1382,6 +1383,9 @@ def test_update_track_metadata(factories):
     assert str(track.artist.mbid) == data["musicbrainz_artistid"]
     assert track.album.artist.name == "Edvard Grieg"
     assert str(track.album.artist.mbid) == "013c8e5b-d72a-4cd3-8dee-6c64d6125823"
+    assert sorted(track.tagged_items.values_list("tag__name", flat=True)) == [
+        "classical"
+    ]
 
 
 def test_fs_import_not_pending(factories):
diff --git a/changes/changelog.d/1246.enhancement b/changes/changelog.d/1246.enhancement
new file mode 100644
index 0000000000..10edbfb23e
--- /dev/null
+++ b/changes/changelog.d/1246.enhancement
@@ -0,0 +1 @@
+Allow genre tags to be updated when rescanning files in-place (#1246)
diff --git a/docs/admin/importing-music.rst b/docs/admin/importing-music.rst
index 4cd71c2f9d..f75a6133ec 100644
--- a/docs/admin/importing-music.rst
+++ b/docs/admin/importing-music.rst
@@ -145,6 +145,7 @@ Funkwhale will pick up the new title. The following fields can be updated this w
 - Track title
 - Track position and disc number
 - Track license and copyright
+- Track genre
 - Album cover
 - Album title
 - Album mbid
-- 
GitLab