rankusers.py 1.0 KB

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