From 6d85f2e352574be43ba23233cf6e704fb63c94dd Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 28 May 2025 09:33:26 +0200 Subject: [PATCH 1/5] Fix trackfavorite migration to add unique fid field --- ...kfavorite_actor_trackfavorite_fid_and_more.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/api/funkwhale_api/favorites/migrations/0003_trackfavorite_actor_trackfavorite_fid_and_more.py b/api/funkwhale_api/favorites/migrations/0003_trackfavorite_actor_trackfavorite_fid_and_more.py index b204ba79c..a7232e545 100644 --- a/api/funkwhale_api/favorites/migrations/0003_trackfavorite_actor_trackfavorite_fid_and_more.py +++ b/api/funkwhale_api/favorites/migrations/0003_trackfavorite_actor_trackfavorite_fid_and_more.py @@ -55,12 +55,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="trackfavorite", name="fid", - field=models.URLField( - db_index=True, - default="https://default.fid", - max_length=500, - unique=True, - ), + field=models.URLField(default="https://default.fid"), preserve_default=False, ), migrations.AddField( @@ -79,6 +74,15 @@ class Migration(migrations.Migration): name="uuid", field=models.UUIDField(default=uuid.uuid4, unique=True, null=False), ), + migrations.AlterField( + model_name="trackfavorite", + name="fid", + field=models.URLField( + db_index=True, + max_length=500, + unique=True, + ), + ), migrations.RunPython(get_user_actor, reverse_code=migrations.RunPython.noop), migrations.AlterField( model_name="trackfavorite", From 65dd47c1f1c5df57bcfe9306833bf515b5ba4d35 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 28 May 2025 09:33:26 +0200 Subject: [PATCH 2/5] Fix playlists migration to add unique fid field --- .../0005_remove_playlist_user_playlist_actor.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py b/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py index ecf4131e4..48b2cf5e5 100644 --- a/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py +++ b/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py @@ -42,7 +42,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="playlist", name="fid", - field=models.URLField(max_length=500 ), + field=models.URLField(max_length=500, null=True), ), migrations.AddField( model_name="playlist", @@ -63,8 +63,13 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="playlist", name="fid", - field=models.URLField(max_length=500, unique=True, db_index=True, - ),), + field=models.URLField( + max_length=500, + unique=True, + db_index=True, + null=False, + ), + ), migrations.AddField( model_name="playlist", name="actor", From 40d64abbc801f53ef9cc857e1ac5a8a9c11b4fca Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 28 May 2025 09:33:26 +0200 Subject: [PATCH 3/5] Fix playlists migration federation namespace --- .../migrations/0005_remove_playlist_user_playlist_actor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py b/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py index 48b2cf5e5..ec02beda9 100644 --- a/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py +++ b/api/funkwhale_api/playlists/migrations/0005_remove_playlist_user_playlist_actor.py @@ -25,7 +25,7 @@ def gen_uuid(apps, schema_editor): unique_uuid = uuid.uuid4() fid = utils.full_url( - reverse("federation:music:playlist-detail", kwargs={"uuid": unique_uuid}) + reverse("federation:music:playlists-detail", kwargs={"uuid": unique_uuid}) ) row.uuid = unique_uuid row.fid = fid From 42d3498564785ea14028cdc5c8826ae6e5e17292 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 28 May 2025 09:33:26 +0200 Subject: [PATCH 4/5] Fixed playlisttrack migration to add unique fid field --- ...aylisttrack_fid_playlisttrack_url_and_more.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/api/funkwhale_api/playlists/migrations/0006_playlisttrack_fid_playlisttrack_url_and_more.py b/api/funkwhale_api/playlists/migrations/0006_playlisttrack_fid_playlisttrack_url_and_more.py index 5a9612893..a33f0c89a 100644 --- a/api/funkwhale_api/playlists/migrations/0006_playlisttrack_fid_playlisttrack_url_and_more.py +++ b/api/funkwhale_api/playlists/migrations/0006_playlisttrack_fid_playlisttrack_url_and_more.py @@ -9,14 +9,14 @@ from funkwhale_api.federation import utils from django.urls import reverse def gen_uuid(apps, schema_editor): - MyModel = apps.get_model("playlists", "Playlist") + MyModel = apps.get_model("playlists", "PlaylistTrack") for row in MyModel.objects.all(): unique_uuid = uuid.uuid4() while MyModel.objects.filter(uuid=unique_uuid).exists(): unique_uuid = uuid.uuid4() fid = utils.full_url( - reverse("federation:music:playlist-detail", kwargs={"uuid": unique_uuid}) + reverse("federation:music:playlists-detail", kwargs={"uuid": unique_uuid}) ) row.uuid = unique_uuid row.fid = fid @@ -38,8 +38,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="playlisttrack", name="fid", - field=models.URLField(max_length=500 - ), + field=models.URLField(max_length=500, null=True), ), migrations.AddField( model_name="playlisttrack", @@ -47,8 +46,8 @@ class Migration(migrations.Migration): field=models.URLField(blank=True, max_length=500, null=True), ), migrations.RunPython(gen_uuid, reverse_code=migrations.RunPython.noop), - migrations.AlterField( - model_name="playlist", + migrations.AlterField( + model_name="playlisttrack", name="uuid", field=models.UUIDField(default=uuid.uuid4, null=False, unique=True), ), @@ -56,6 +55,7 @@ class Migration(migrations.Migration): model_name="playlisttrack", name="fid", field=models.URLField( - db_index=True, max_length=500, unique=True - ),), + db_index=True, max_length=500, unique=True, null=False + ), + ), ] From 1d8805a0fc58ee1e709a6152ef357c25b98d7da7 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 28 May 2025 09:55:46 +0200 Subject: [PATCH 5/5] Added changelog for DB migration fixes --- changes/changelog.d/2457.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/changelog.d/2457.bugfix diff --git a/changes/changelog.d/2457.bugfix b/changes/changelog.d/2457.bugfix new file mode 100644 index 000000000..46993fc2a --- /dev/null +++ b/changes/changelog.d/2457.bugfix @@ -0,0 +1 @@ +Fixed database migrations for trackfavorite, playlist and playlisttrack