activeposters.py 1.0 KB

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