import time from rest_framework import serializers from marietje.api.v1.serializers import UserRelatedFieldSerializer from queues.models import Queue, Playlist, PlaylistSong, QueueCommand from songs.api.v1.serializers import SongSerializer class PlaylistSongSerializer(serializers.ModelSerializer): song = SongSerializer() user = UserRelatedFieldSerializer() class Meta: model = PlaylistSong fields = ["id", "playlist", "song", "user", "played_at"] class PlaylistSerializer(serializers.ModelSerializer): songs = PlaylistSongSerializer(many=True) class Meta: model = Playlist fields = [ "id", "songs", ] class QueueSerializer(serializers.ModelSerializer): current_song = serializers.SerializerMethodField(read_only=True) queue = serializers.SerializerMethodField(read_only=True) def get_current_song(self, queue): return PlaylistSongSerializer(queue.current_song()).data def get_queue(self, queue): return PlaylistSongSerializer(queue.queue(), many=True).data class Meta: model = Queue fields = [ "id", "name", "playlist", "random_playlist", "current_song", "queue", "started_at", ] read_only_fiels = [ "id", "current_song", "queue", ] class QueueCommandSerializer(serializers.ModelSerializer): class Meta: model = QueueCommand fields = [ "id", "queue", "command", ]