From fb2eea956ef7416eb755ebecf58db7f9a57215c4 Mon Sep 17 00:00:00 2001 From: Gabriel Rodríguez Alberich Date: Sat, 17 Dec 2022 01:06:29 +0100 Subject: Several pagination improvements (#170) Home/Notification gets pagination, Follows becomes ListView--- activities/views/timelines.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'activities/views/timelines.py') diff --git a/activities/views/timelines.py b/activities/views/timelines.py index d797cfd..84e490f 100644 --- a/activities/views/timelines.py +++ b/activities/views/timelines.py @@ -1,3 +1,4 @@ +from django.core.paginator import Paginator from django.shortcuts import get_object_or_404, redirect from django.template.defaultfilters import linebreaks_filter from django.utils.decorators import method_decorator @@ -22,20 +23,23 @@ class Home(FormView): def get_context_data(self): context = super().get_context_data() - context["events"] = list( + events = ( TimelineEvent.objects.filter( identity=self.request.identity, type__in=[TimelineEvent.Types.post, TimelineEvent.Types.boost], ) .select_related("subject_post", "subject_post__author") .prefetch_related("subject_post__attachments", "subject_post__mentions") - .order_by("-created")[:50] + .order_by("-created") ) context["interactions"] = PostInteraction.get_event_interactions( - context["events"], self.request.identity + events, self.request.identity ) context["current_page"] = "home" context["allows_refresh"] = True + paginator = Paginator(events, 50) + page_number = self.request.GET.get("page") + context["page_obj"] = paginator.get_page(page_number) return context def form_valid(self, form): @@ -74,7 +78,7 @@ class Tag(ListView): .tagged_with(self.hashtag) .select_related("author") .prefetch_related("attachments", "mentions") - .order_by("-created")[:50] + .order_by("-created") ) def get_context_data(self): @@ -103,7 +107,7 @@ class Local(ListView): Post.objects.local_public() .select_related("author", "author__domain") .prefetch_related("attachments", "mentions", "emojis") - .order_by("-created")[:50] + .order_by("-created") ) def get_context_data(self): @@ -131,7 +135,7 @@ class Federated(ListView): ) .select_related("author", "author__domain") .prefetch_related("attachments", "mentions", "emojis") - .order_by("-created")[:50] + .order_by("-created") ) def get_context_data(self): @@ -175,7 +179,7 @@ class Notifications(ListView): types.append(type) return ( TimelineEvent.objects.filter(identity=self.request.identity, type__in=types) - .order_by("-created")[:50] + .order_by("-created") .select_related( "subject_post", "subject_post__author", -- cgit v1.2.3