12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from datetime import timedelta
- from django.contrib.auth import get_user_model
- from django.db.models import Count
- from django.utils import timezone
- from rest_framework.pagination import PageNumberPagination
- from misago.conf import settings
- from misago.core.cache import cache
- from misago.core.shortcuts import get_object_or_404
- from misago.forums.models import Forum
- from misago.users.views.lists import get_active_posters_rankig
- from misago.users.models import Rank
- from misago.users.online.utils import make_users_status_aware
- from misago.users.serializers import ScoredUserSerializer
- def active(request):
- ranking = get_active_posters_rankig()
- make_users_status_aware(ranking['users'], request.user.acl)
- return {
- 'tracked_period': settings.MISAGO_RANKING_LENGTH,
- 'results': ScoredUserSerializer(ranking['users'], many=True).data,
- 'count': ranking['users_count']
- }
- def rank(request, queryset):
- rank_slug = request.query_params.get('rank')
- if not rank_slug:
- return
- rank = get_object_or_404(Rank.objects.filter(is_tab=True), slug=rank_slug)
- queryset = queryset.filter(rank=rank).order_by('slug')
- return {'queryset': queryset, 'paginate': True}
- LISTS = {
- 'active': active,
- 'rank': rank,
- }
- def list_endpoint(request):
- list_type = request.query_params.get('list')
- list_handler = LISTS.get(list_type)
- if list_handler:
- return list_handler(request)
- else:
- return
|