Просмотр исходного кода

use PostFeedSerializer for user feeds

Rafał Pitoń 8 лет назад
Родитель
Сommit
aeed397553

+ 2 - 1
misago/threads/serializers/post.py

@@ -4,7 +4,7 @@ from rest_framework import serializers
 
 from misago.categories.models import Category
 from misago.categories.serializers import BasicCategorySerializer
-from misago.users.serializers import UserSerializer
+from misago.users.serializers import BasicUserSerializer, UserSerializer
 
 from ..models import Post
 
@@ -180,6 +180,7 @@ class CategoryFeedSerializer(BasicCategorySerializer):
 
 
 class PostFeedSerializer(PostSerializer):
+    poster = BasicUserSerializer(many=False, read_only=True)
     category = CategoryFeedSerializer(many=False, read_only=True)
 
     thread = serializers.SerializerMethodField()

+ 0 - 1
misago/users/serializers/__init__.py

@@ -1,4 +1,3 @@
 from .ban import *
 from .rank import *
 from .user import *
-# from .userfeed import UserFeedSerializer

+ 0 - 11
misago/users/serializers/userfeed.py

@@ -1,11 +0,0 @@
-from misago.threads.models import Post
-from misago.threads.serializers import PostFeedSerializer
-
-
-class UserFeedSerializer(PostFeedSerializer):
-    class Meta:
-        model = Post
-        fields = PostFeedSerializer.Meta.fields
-
-        fields.remove('poster')
-        fields.remove('poster_name')

+ 1 - 1
misago/users/viewmodels/posts.py

@@ -10,6 +10,6 @@ class UserPosts(UserThreads):
             request.user, threads_categories, Thread.objects)
 
     def get_posts_queryset(self, user, profile, threads_queryset):
-        return profile.post_set.select_related('thread').filter(
+        return profile.post_set.select_related('thread', 'poster').filter(
             thread_id__in=threads_queryset.values('id')
         )

+ 13 - 14
misago/users/viewmodels/threads.py

@@ -4,13 +4,13 @@ from misago.acl import add_acl
 from misago.core.shortcuts import paginate, pagination_dict
 from misago.readtracker import threadstracker
 from misago.threads.permissions import exclude_invisible_threads
-from misago.threads.threadtypes import trees_map
+from misago.threads.serializers import PostFeedSerializer
 from misago.threads.subscriptions import make_subscription_aware
+from misago.threads.threadtypes import trees_map
 from misago.threads.utils import add_categories_to_items, add_likes_to_posts
 from misago.threads.viewmodels import ThreadsRootCategory
-from misago.users.online.utils import make_users_status_aware
 
-from ..serializers.userfeed import UserFeedSerializer
+from ..online.utils import make_users_status_aware
 
 
 class UserThreads(object):
@@ -20,13 +20,14 @@ class UserThreads(object):
 
         threads_queryset = self.get_threads_queryset(
             request, threads_categories, profile)
+
         posts_queryset = self.get_posts_queryset(
             request.user, profile, threads_queryset
-            ).filter(
-                is_event=False,
-                is_hidden=False,
-                is_unapproved=False
-            ).order_by('-pk')
+        ).filter(
+            is_event=False,
+            is_hidden=False,
+            is_unapproved=False
+        ).order_by('-id')
 
         list_page = paginate(
             posts_queryset, page, settings.MISAGO_POSTS_PER_PAGE, settings.MISAGO_POSTS_TAIL)
@@ -43,8 +44,7 @@ class UserThreads(object):
             if post.poster:
                 posters.append(post.poster)
 
-        add_categories_to_items(
-            root_category.unwrap(), threads_categories, posts + threads)
+        add_categories_to_items(root_category.unwrap(), threads_categories, posts + threads)
 
         add_acl(request.user, threads)
         add_acl(request.user, posts)
@@ -63,17 +63,16 @@ class UserThreads(object):
         self.paginator = paginator
 
     def get_threads_queryset(self, request, threads_categories, profile):
-        return exclude_invisible_threads(
-            request.user, threads_categories, profile.thread_set)
+        return exclude_invisible_threads(request.user, threads_categories, profile.thread_set)
 
     def get_posts_queryset(self, user, profile, threads_queryset):
-        return profile.post_set.select_related('thread').filter(
+        return profile.post_set.select_related('thread', 'poster').filter(
             id__in=threads_queryset.values('first_post_id')
         )
 
     def get_frontend_context(self):
         context = {
-            'results': UserFeedSerializer(self.posts, many=True, context={'user': self._user}).data
+            'results': PostFeedSerializer(self.posts, many=True, context={'user': self._user}).data
         }
 
         context.update(self.paginator)