feed.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from rest_framework import serializers
  2. from misago.api.serializers import MutableFields
  3. from misago.categories.serializers import CategorySerializer
  4. from misago.threads.models import Post
  5. from misago.users.serializers import UserSerializer
  6. from .post import PostSerializer
  7. __all__ = [
  8. 'FeedSerializer',
  9. ]
  10. FeedUserSerializer = UserSerializer.subset_fields(
  11. 'id',
  12. 'username',
  13. 'avatars',
  14. 'url',
  15. 'title',
  16. 'rank',
  17. )
  18. FeedCategorySerializer = CategorySerializer.subset_fields('name', 'css_class', 'url')
  19. class FeedSerializer(PostSerializer, MutableFields):
  20. poster = FeedUserSerializer(many=False, read_only=True)
  21. category = FeedCategorySerializer(many=False, read_only=True)
  22. thread = serializers.SerializerMethodField()
  23. class Meta:
  24. model = Post
  25. fields = PostSerializer.Meta.fields + ['category', 'thread']
  26. def get_thread(self, obj):
  27. return {
  28. 'title': obj.thread.title,
  29. 'url': obj.thread.get_absolute_url(),
  30. }
  31. FeedSerializer = FeedSerializer.exclude_fields('is_liked', 'is_new', 'is_read')