Sort followers/following lists by if you follow the user
This commit is contained in:
parent
054a85b0dd
commit
bcfe13bb4e
|
@ -1,6 +1,7 @@
|
||||||
""" non-interactive pages """
|
""" non-interactive pages """
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
|
from django.db.models import Q, Count
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.template.response import TemplateResponse
|
from django.template.response import TemplateResponse
|
||||||
|
@ -105,9 +106,8 @@ class Followers(View):
|
||||||
if is_api_request(request):
|
if is_api_request(request):
|
||||||
return ActivitypubResponse(user.to_followers_activity(**request.GET))
|
return ActivitypubResponse(user.to_followers_activity(**request.GET))
|
||||||
|
|
||||||
paginated = Paginator(
|
followers = annotate_if_follows(request.user, user.followers)
|
||||||
user.followers.order_by("-created_date").all(), PAGE_LENGTH
|
paginated = Paginator(followers.all(), PAGE_LENGTH)
|
||||||
)
|
|
||||||
data = {
|
data = {
|
||||||
"user": user,
|
"user": user,
|
||||||
"is_self": request.user.id == user.id,
|
"is_self": request.user.id == user.id,
|
||||||
|
@ -126,9 +126,8 @@ class Following(View):
|
||||||
if is_api_request(request):
|
if is_api_request(request):
|
||||||
return ActivitypubResponse(user.to_following_activity(**request.GET))
|
return ActivitypubResponse(user.to_following_activity(**request.GET))
|
||||||
|
|
||||||
paginated = Paginator(
|
following = annotate_if_follows(request.user, user.following)
|
||||||
user.following.order_by("-created_date").all(), PAGE_LENGTH
|
paginated = Paginator(following.all(), PAGE_LENGTH)
|
||||||
)
|
|
||||||
data = {
|
data = {
|
||||||
"user": user,
|
"user": user,
|
||||||
"is_self": request.user.id == user.id,
|
"is_self": request.user.id == user.id,
|
||||||
|
@ -137,6 +136,16 @@ class Following(View):
|
||||||
return TemplateResponse(request, "user/relationships/following.html", data)
|
return TemplateResponse(request, "user/relationships/following.html", data)
|
||||||
|
|
||||||
|
|
||||||
|
def annotate_if_follows(user, queryset):
|
||||||
|
"""Sort a list of users by if you follow them"""
|
||||||
|
if not user.is_authenticated:
|
||||||
|
return queryset.order_by("-created_date")
|
||||||
|
|
||||||
|
return queryset.annotate(
|
||||||
|
request_user_follows=Count("followers", filter=Q(followers=user))
|
||||||
|
).order_by("-request_user_follows", "-created_date")
|
||||||
|
|
||||||
|
|
||||||
class Groups(View):
|
class Groups(View):
|
||||||
"""list of user's groups view"""
|
"""list of user's groups view"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue