Browse Source

feat(podcast, video): add audio and video file URL retrieval in serializers

- Introduced `audio_file` and `video_file` SerializerMethodFields in PodcastListSerializer and VideoListSerializer, respectively.
- Implemented methods to return the full URL for audio and video files if they exist, enhancing the API response with direct access to media files.
- Updated fields in both serializers to include the new file attributes, improving the data structure for clients consuming the API.
master
mortezaei 6 months ago
parent
commit
04b1f7ec02
  1. 13
      apps/podcast/serializers.py
  2. 13
      apps/video/serializers.py

13
apps/podcast/serializers.py

@ -17,15 +17,26 @@ class PodcastCategoryListSerializer(serializers.ModelSerializer):
class PodcastListSerializer(serializers.ModelSerializer):
thumbnail = serializers.SerializerMethodField()
audio_file = serializers.SerializerMethodField()
in_user_playlist = serializers.SerializerMethodField()
class Meta:
model = Podcast
fields = ['id', 'title', 'slug', 'thumbnail', 'description', 'audio_time', 'view_count', 'created_at', 'in_user_playlist']
fields = ['id', 'title', 'slug', 'thumbnail', 'description', 'audio_file',
'audio_time', 'view_count', 'created_at', 'in_user_playlist']
def get_thumbnail(self, obj):
return get_thumbs(obj.thumbnail, self.context.get('request'))
def get_audio_file(self, obj):
"""Get full URL for audio file if it exists"""
if obj.audio_file:
request = self.context.get('request')
if request:
return request.build_absolute_uri(obj.audio_file.url)
return obj.audio_file.url
return None
def get_in_user_playlist(self, obj):
"""
Check if the podcast is in the user's personal playlist.

13
apps/video/serializers.py

@ -17,14 +17,25 @@ class VideoCategoryListSerializer(serializers.ModelSerializer):
class VideoListSerializer(serializers.ModelSerializer):
thumbnail = serializers.SerializerMethodField()
video_file = serializers.SerializerMethodField()
class Meta:
model = Video
fields = ['id', 'title', 'slug', 'thumbnail', 'description', 'video_time', 'view_count', 'created_at']
fields = ['id', 'title', 'slug', 'thumbnail', 'description', 'video_type',
'video_file', 'video_url', 'video_time', 'view_count', 'created_at']
def get_thumbnail(self, obj):
return get_thumbs(obj.thumbnail, self.context.get('request'))
def get_video_file(self, obj):
"""Get full URL for video file if it exists"""
if obj.video_file:
request = self.context.get('request')
if request:
return request.build_absolute_uri(obj.video_file.url)
return obj.video_file.url
return None
class VideoPlaylistListSerializer(serializers.ModelSerializer):
thumbnail = serializers.SerializerMethodField()

Loading…
Cancel
Save