from django.db import transaction from rest_framework import serializers from funkwhale_api.common import serializers as common_serializers from funkwhale_api.music import models as music_models from . import filters class ManageTrackFileArtistSerializer(serializers.ModelSerializer): class Meta: model = music_models.Artist fields = ["id", "mbid", "creation_date", "name"] class ManageTrackFileAlbumSerializer(serializers.ModelSerializer): artist = ManageTrackFileArtistSerializer() class Meta: model = music_models.Album fields = ( "id", "mbid", "title", "artist", "release_date", "cover", "creation_date", ) class ManageTrackFileTrackSerializer(serializers.ModelSerializer): artist = ManageTrackFileArtistSerializer() album = ManageTrackFileAlbumSerializer() class Meta: model = music_models.Track fields = ("id", "mbid", "title", "album", "artist", "creation_date", "position") class ManageTrackFileSerializer(serializers.ModelSerializer): track = ManageTrackFileTrackSerializer() class Meta: model = music_models.TrackFile fields = ( "id", "path", "source", "filename", "mimetype", "track", "duration", "mimetype", "bitrate", "size", "path", "library_track", ) class ManageTrackFileActionSerializer(common_serializers.ActionSerializer): actions = ["delete"] dangerous_actions = ["delete"] filterset_class = filters.ManageTrackFileFilterSet @transaction.atomic def handle_delete(self, objects): return objects.delete()