rankusers.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from misago.conf import settings
  2. from misago.core.shortcuts import paginate, pagination_dict
  3. from misago.users.online.utils import make_users_status_aware
  4. from misago.users.serializers import UserCardSerializer
  5. class RankUsers(object):
  6. def __init__(self, request, rank, page=0):
  7. queryset = rank.user_set.select_related(
  8. 'rank',
  9. 'ban_cache',
  10. 'online_tracker',
  11. ).order_by('slug')
  12. if not request.user.is_staff:
  13. queryset = queryset.filter(is_active=True)
  14. list_page = paginate(queryset, page, settings.MISAGO_USERS_PER_PAGE, 4)
  15. make_users_status_aware(request.user, list_page.object_list)
  16. self.users = list_page.object_list
  17. self.paginator = pagination_dict(list_page)
  18. def get_frontend_context(self):
  19. context = {'results': UserCardSerializer(self.users, many=True).data}
  20. context.update(self.paginator)
  21. return context
  22. def get_template_context(self):
  23. return {
  24. 'users': self.users,
  25. 'paginator': self.paginator,
  26. }