activeposters.py 969 B

123456789101112131415161718192021222324252627282930
  1. from ..activepostersranking import get_active_posters_ranking
  2. from ..online.utils import make_users_status_aware
  3. from ..serializers import UserCardSerializer
  4. class ActivePosters:
  5. def __init__(self, request):
  6. ranking = get_active_posters_ranking()
  7. make_users_status_aware(request, ranking["users"], fetch_state=True)
  8. self.count = ranking["users_count"]
  9. self.tracked_period = request.settings.top_posters_ranking_length
  10. self.users = ranking["users"]
  11. def get_frontend_context(self):
  12. return {
  13. "tracked_period": self.tracked_period,
  14. "results": ScoredUserSerializer(self.users, many=True).data,
  15. "count": self.count,
  16. }
  17. def get_template_context(self):
  18. return {
  19. "tracked_period": self.tracked_period,
  20. "users": self.users,
  21. "users_count": self.count,
  22. }
  23. ScoredUserSerializer = UserCardSerializer.extend_fields("meta")