from rest_framework import serializers from misago.categories.serializers import CategorySerializer from misago.core.serializers import MutableFields from misago.threads.models import Post from misago.users.serializers import UserSerializer from .post import PostSerializer __all__ = ["FeedSerializer"] FeedUserSerializer = UserSerializer.subset_fields( "id", "username", "avatars", "url", "title", "rank" ) FeedCategorySerializer = CategorySerializer.subset_fields("name", "css_class", "url") class FeedSerializer(PostSerializer, MutableFields): poster = FeedUserSerializer(many=False, read_only=True) category = FeedCategorySerializer(many=False, read_only=True) thread = serializers.SerializerMethodField() class Meta: model = Post fields = PostSerializer.Meta.fields + ["category", "thread"] def get_thread(self, obj): return {"title": obj.thread.title, "url": obj.thread.get_absolute_url()} FeedSerializer = FeedSerializer.exclude_fields("is_liked", "is_new", "is_read")