File size: 1,547 Bytes
2d610a5
df4965a
2d610a5
 
4d888b5
2d610a5
 
df4965a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from rest_framework import serializers
from .models import TextToSpeech

class TextToSpeechSerializer(serializers.Serializer):
    text = serializers.CharField(default="In the quest for a sustainable future, renewable energy emerges as a beacon of hope")
    speaker_wav = serializers.FileField()
    language = serializers.CharField(default="en")


class TextToSpeechSerializerResponse(serializers.ModelSerializer):
    created_by = serializers.SerializerMethodField()

    class Meta:
        model = TextToSpeech
        fields = ['id', 'text', 'speaker_wav', 'output_wav', 'language', 'created_by']
        # Ensure that all the fields you want to include are listed here

    def get_created_by(self, obj):
        return obj.created_by.username if obj.created_by else None

class TextToSpeechSerializerResponseWithURL(serializers.ModelSerializer):
    speaker_wav_url = serializers.SerializerMethodField()
    output_wav_url = serializers.SerializerMethodField()
    created_by = serializers.SerializerMethodField()


    class Meta:
        model = TextToSpeech
        fields = ['id', 'text', 'speaker_wav_url', 'output_wav_url', 'language', 'created_by']
        # Add or remove fields as necessary

    def get_speaker_wav_url(self, obj):
        return self.context['view'].generate_presigned_url(obj.speaker_wav)

    def get_output_wav_url(self, obj):
        return self.context['view'].generate_presigned_url(obj.output_wav)
    
    def get_created_by(self, obj):
        return obj.created_by.username if obj.created_by else None