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

+ 3 - 9
misago/users/api/userendpoints/list.py

@@ -11,24 +11,18 @@ from django.utils import timezone
 from misago.conf import settings
 from misago.core.cache import cache
 from misago.core.shortcuts import get_int_or_404, paginate, paginated_response
-from misago.users.activepostersranking import get_active_posters_ranking
 from misago.users.models import Rank
 from misago.users.online.utils import make_users_status_aware
 from misago.users.serializers import UserCardSerializer
+from misago.users.viewmodels import ActivePosters
 
 
 UserModel = get_user_model()
 
 
 def active(request):
-    ranking = get_active_posters_ranking()
-    make_users_status_aware(request.user, ranking['users'], fetch_state=True)
-
-    return Response({
-        'tracked_period': settings.MISAGO_RANKING_LENGTH,
-        'results': ScoredUserSerializer(ranking['users'], many=True).data,
-        'count': ranking['users_count']
-    })
+    model = ActivePosters(request)
+    return Response(model.get_frontend_context())
 
 
 def generic(request):

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

@@ -1,2 +1,3 @@
+from .activeposters import ActivePosters
 from .threads import UserThreads
 from .posts import UserPosts

+ 4 - 12
misago/users/views/lists.py

@@ -7,11 +7,11 @@ from django.utils import six
 from misago.conf import settings
 from misago.core.shortcuts import paginate, pagination_dict
 from misago.core.utils import format_plaintext_for_html
-from misago.users.activepostersranking import get_active_posters_ranking
 from misago.users.models import Rank
 from misago.users.pages import users_list
 from misago.users.permissions import allow_browse_users_list
 from misago.users.serializers import UserCardSerializer
+from misago.users.viewmodels import ActivePosters
 
 
 def render(request, template, context):
@@ -76,20 +76,12 @@ def landing(request):
 
 @allow_see_list
 def active_posters(request):
-    ranking = get_active_posters_ranking()
+    model = ActivePosters(request)
 
-    request.frontend_context['USERS'] = {
-        'tracked_period': settings.MISAGO_RANKING_LENGTH,
-        'results': ScoredUserSerializer(ranking['users'], many=True).data,
-        'count': ranking['users_count']
-    }
+    request.frontend_context['USERS'] = model.get_frontend_context()
 
     template = "misago/userslists/active_posters.html"
-    return render(request, template, {
-        'tracked_period': settings.MISAGO_RANKING_LENGTH,
-        'users': ranking['users'],
-        'users_count': ranking['users_count']
-    })
+    return render(request, template, model.get_template_context())
 
 
 @allow_see_list