123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- from rest_framework import serializers
- from .models import Category, Comment, EncodeProfile, Media, Playlist, Tag
- # TODO: put them in a more DRY way
- class MediaSerializer(serializers.ModelSerializer):
- # to be used in APIs as show related media
- user = serializers.ReadOnlyField(source="user.username")
- url = serializers.SerializerMethodField()
- api_url = serializers.SerializerMethodField()
- thumbnail_url = serializers.SerializerMethodField()
- author_profile = serializers.SerializerMethodField()
- author_thumbnail = serializers.SerializerMethodField()
- def get_url(self, obj):
- return self.context["request"].build_absolute_uri(obj.get_absolute_url())
- def get_api_url(self, obj):
- return self.context["request"].build_absolute_uri(obj.get_absolute_url(api=True))
- def get_thumbnail_url(self, obj):
- if obj.thumbnail_url:
- return self.context["request"].build_absolute_uri(obj.thumbnail_url)
- else:
- return None
- def get_author_profile(self, obj):
- return self.context["request"].build_absolute_uri(obj.author_profile())
- def get_author_thumbnail(self, obj):
- return self.context["request"].build_absolute_uri(obj.author_thumbnail())
- class Meta:
- model = Media
- read_only_fields = (
- "friendly_token",
- "user",
- "add_date",
- "media_type",
- "state",
- "duration",
- "encoding_status",
- "views",
- "likes",
- "dislikes",
- "reported_times",
- "size",
- "is_reviewed",
- "featured",
- )
- fields = (
- "friendly_token",
- "url",
- "api_url",
- "user",
- "title",
- "description",
- "add_date",
- "views",
- "media_type",
- "state",
- "duration",
- "thumbnail_url",
- "is_reviewed",
- "preview_url",
- "author_name",
- "author_profile",
- "author_thumbnail",
- "encoding_status",
- "views",
- "likes",
- "dislikes",
- "reported_times",
- "featured",
- "user_featured",
- "size",
- )
- class SingleMediaSerializer(serializers.ModelSerializer):
- user = serializers.ReadOnlyField(source="user.username")
- url = serializers.SerializerMethodField()
- def get_url(self, obj):
- return self.context["request"].build_absolute_uri(obj.get_absolute_url())
- class Meta:
- model = Media
- read_only_fields = (
- "friendly_token",
- "user",
- "add_date",
- "views",
- "media_type",
- "state",
- "duration",
- "encoding_status",
- "views",
- "likes",
- "dislikes",
- "reported_times",
- "size",
- "video_height",
- "is_reviewed",
- )
- fields = (
- "url",
- "user",
- "title",
- "description",
- "add_date",
- "edit_date",
- "media_type",
- "state",
- "duration",
- "thumbnail_url",
- "poster_url",
- "thumbnail_time",
- "url",
- "sprites_url",
- "preview_url",
- "author_name",
- "author_profile",
- "author_thumbnail",
- "encodings_info",
- "encoding_status",
- "views",
- "likes",
- "dislikes",
- "reported_times",
- "user_featured",
- "original_media_url",
- "size",
- "video_height",
- "enable_comments",
- "categories_info",
- "is_reviewed",
- "edit_url",
- "tags_info",
- "hls_info",
- "license",
- "subtitles_info",
- "ratings_info",
- "add_subtitle_url",
- "allow_download",
- )
- class MediaSearchSerializer(serializers.ModelSerializer):
- url = serializers.SerializerMethodField()
- api_url = serializers.SerializerMethodField()
- def get_url(self, obj):
- return self.context["request"].build_absolute_uri(obj.get_absolute_url())
- def get_api_url(self, obj):
- return self.context["request"].build_absolute_uri(obj.get_absolute_url(api=True))
- class Meta:
- model = Media
- fields = (
- "title",
- "author_name",
- "author_profile",
- "thumbnail_url",
- "add_date",
- "views",
- "description",
- "friendly_token",
- "duration",
- "url",
- "api_url",
- "media_type",
- "preview_url",
- "categories_info",
- )
- class EncodeProfileSerializer(serializers.ModelSerializer):
- class Meta:
- model = EncodeProfile
- fields = ("name", "extension", "resolution", "codec", "description")
- class CategorySerializer(serializers.ModelSerializer):
- user = serializers.ReadOnlyField(source="user.username")
- class Meta:
- model = Category
- fields = (
- "title",
- "description",
- "is_global",
- "media_count",
- "user",
- "thumbnail_url",
- )
- class TagSerializer(serializers.ModelSerializer):
- class Meta:
- model = Tag
- fields = ("title", "media_count", "thumbnail_url")
- class PlaylistSerializer(serializers.ModelSerializer):
- user = serializers.ReadOnlyField(source="user.username")
- class Meta:
- model = Playlist
- read_only_fields = ("add_date", "user")
- fields = ("add_date", "title", "description", "user", "media_count", "url", "api_url", "thumbnail_url")
- class PlaylistDetailSerializer(serializers.ModelSerializer):
- user = serializers.ReadOnlyField(source="user.username")
- class Meta:
- model = Playlist
- read_only_fields = ("add_date", "user")
- fields = ("title", "add_date", "user_thumbnail_url", "description", "user", "media_count", "url", "thumbnail_url")
- class CommentSerializer(serializers.ModelSerializer):
- author_profile = serializers.ReadOnlyField(source="user.get_absolute_url")
- author_name = serializers.ReadOnlyField(source="user.name")
- author_thumbnail_url = serializers.ReadOnlyField(source="user.thumbnail_url")
- class Meta:
- model = Comment
- read_only_fields = ("add_date", "uid")
- fields = (
- "add_date",
- "text",
- "parent",
- "author_thumbnail_url",
- "author_profile",
- "author_name",
- "media_url",
- "uid",
- )
|