From b09969c71f3cc0e0198a1fb84e6b02e847c96b1f Mon Sep 17 00:00:00 2001 From: Petitminion Date: Fri, 10 Jan 2025 11:16:29 +0100 Subject: [PATCH] fix:clean django migration --- ...060_remove_library_description_and_more.py | 21 ---- .../0061_migrate_libraries_to_playlist.py | 108 ------------------ 2 files changed, 129 deletions(-) delete mode 100644 api/funkwhale_api/music/migrations/0060_remove_library_description_and_more.py delete mode 100644 api/funkwhale_api/music/migrations/0061_migrate_libraries_to_playlist.py diff --git a/api/funkwhale_api/music/migrations/0060_remove_library_description_and_more.py b/api/funkwhale_api/music/migrations/0060_remove_library_description_and_more.py deleted file mode 100644 index 6d14e152f..000000000 --- a/api/funkwhale_api/music/migrations/0060_remove_library_description_and_more.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.2.9 on 2025-01-03 20:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("music", "0059_remove_album_artist_remove_track_artist_artistcredit_and_more"), - ("playlists", "0007_alter_playlist_actor_alter_playlisttrack_uuid_and_more"), - ] - - operations = [ - migrations.RemoveField( - model_name="library", - name="description", - ), - migrations.RemoveField( - model_name="library", - name="followers_url", - ), - ] diff --git a/api/funkwhale_api/music/migrations/0061_migrate_libraries_to_playlist.py b/api/funkwhale_api/music/migrations/0061_migrate_libraries_to_playlist.py deleted file mode 100644 index 52be63931..000000000 --- a/api/funkwhale_api/music/migrations/0061_migrate_libraries_to_playlist.py +++ /dev/null @@ -1,108 +0,0 @@ -# Generated by Django 4.2.9 on 2025-01-03 16:12 - -from django.db import migrations, models -from django.db import IntegrityError - -from funkwhale_api.federation import utils as federation_utils -from django.urls import reverse -import uuid - - -def insert_tracks_to_playlist(apps, playlist, uploads): - PlaylistTrack = apps.get_model("playlists", "PlaylistTrack") - plts = [ - PlaylistTrack( - creation_date=playlist.creation_date, - playlist=playlist, - track=upload.track, - index=0 + i, - uuid=(new_uuid := uuid.uuid4()), - fid=federation_utils.full_url( - reverse( - f"federation:music:playlists-detail", - kwargs={"uuid": new_uuid}, - ) - ), - ) - for i, upload in enumerate(uploads) - if upload.track - ] - - return PlaylistTrack.objects.bulk_create(plts) - - -def migrate_libraries_to_playlist(apps, schema_editor): - Playlist = apps.get_model("playlists", "Playlist") - Library = apps.get_model("music", "Library") - LibraryFollow = apps.get_model("federation", "LibraryFollow") - Follow = apps.get_model("federation", "Follow") - User = apps.get_model("users", "User") - Actor = apps.get_model("federation", "Actor") - - # library to playlist - for library in Library.objects.all(): - playlist = Playlist.objects.create( - name=library.name, - actor=library.actor, - creation_date=library.creation_date, - privacy_level=library.privacy_level, - uuid=(new_uuid := uuid.uuid4()), - fid=federation_utils.full_url( - reverse( - f"federation:music:playlists-detail", - kwargs={"uuid": new_uuid}, - ) - ), - ) - playlist.save() - - if library.uploads.all().exists(): - insert_tracks_to_playlist(apps, playlist, library.uploads.all()) - - # library follows to user follow - for lib_follow in LibraryFollow.objects.filter(target=library): - try: - Follow.objects.create( - uuid=lib_follow.uuid, - target=library.actor, - actor=lib_follow.actor, - approved=lib_follow.approved, - creation_date=lib_follow.creation_date, - modification_date=lib_follow.modification_date, - ) - except IntegrityError: - pass - - LibraryFollow.objects.all().delete() - - # migrate uploads to new library - for actor in Actor.objects.all(): - privacy_levels = ["me", "instance", "everyone"] - for privacy_level in privacy_levels: - build_in_lib = Library.objects.create( - actor=actor, - privacy_level=privacy_level, - name=privacy_level, - uuid=(new_uuid := uuid.uuid4()), - fid=federation_utils.full_url( - reverse( - f"federation:music:playlists-detail", - kwargs={"uuid": new_uuid}, - ) - ), - ) - for library in actor.libraries.filter(privacy_level=privacy_level): - library.uploads.all().update(library=build_in_lib) - if library.pk is not build_in_lib.pk: - library.delete() - - -class Migration(migrations.Migration): - dependencies = [ - ("music", "0060_remove_library_description_and_more"), - ] - operations = [ - migrations.RunPython( - migrate_libraries_to_playlist, reverse_code=migrations.RunPython.noop - ), - ]