83 lines
1.9 KiB
Python
83 lines
1.9 KiB
Python
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()
|