Skip to content
Snippets Groups Projects
serializers.py 1.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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']
        filterset_class = filters.ManageTrackFileFilterSet
    
        @transaction.atomic
        def handle_delete(self, objects):
            return objects.delete()