36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from rest_framework import serializers
|
|
|
|
from funkwhale_api.music.serializers import TrackSerializerNested
|
|
from . import models
|
|
|
|
|
|
class RadioSessionTrackSerializerCreate(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = models.RadioSessionTrack
|
|
fields = ('session',)
|
|
|
|
|
|
class RadioSessionTrackSerializer(serializers.ModelSerializer):
|
|
track = TrackSerializerNested()
|
|
|
|
class Meta:
|
|
model = models.RadioSessionTrack
|
|
fields = ('id', 'session', 'position', 'track')
|
|
|
|
|
|
class RadioSessionSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = models.RadioSession
|
|
fields = ('id', 'radio_type', 'related_object_id', 'user', 'creation_date', 'session_key')
|
|
|
|
def create(self, validated_data):
|
|
if self.context.get('user'):
|
|
validated_data['user'] = self.context.get('user')
|
|
else:
|
|
validated_data['session_key'] = self.context['session_key']
|
|
if validated_data.get('related_object_id'):
|
|
from . import radios
|
|
radio = radios.registry[validated_data['radio_type']]()
|
|
validated_data['related_object'] = radio.get_related_object(validated_data['related_object_id'])
|
|
return super().create(validated_data)
|