Uses django paginator for feed page

This commit is contained in:
Mouse Reeve 2020-11-11 10:35:34 -08:00
parent 92c34ccbf6
commit 91a32c014e
2 changed files with 16 additions and 10 deletions

View file

@ -6,6 +6,8 @@ from environs import Env
env = Env() env = Env()
DOMAIN = env('DOMAIN') DOMAIN = env('DOMAIN')
PAGE_LENGTH = env('PAGE_LENGTH', 15)
# celery # celery
CELERY_BROKER = env('CELERY_BROKER') CELERY_BROKER = env('CELERY_BROKER')
CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND') CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND')

View file

@ -3,6 +3,7 @@ import re
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.postgres.search import TrigramSimilarity from django.contrib.postgres.search import TrigramSimilarity
from django.core.paginator import Paginator
from django.db.models import Avg, Q from django.db.models import Avg, Q
from django.http import HttpResponseBadRequest, HttpResponseNotFound,\ from django.http import HttpResponseBadRequest, HttpResponseNotFound,\
JsonResponse JsonResponse
@ -15,6 +16,7 @@ from bookwyrm import outgoing
from bookwyrm.activitypub import ActivityEncoder from bookwyrm.activitypub import ActivityEncoder
from bookwyrm import forms, models, books_manager from bookwyrm import forms, models, books_manager
from bookwyrm import goodreads_import from bookwyrm import goodreads_import
from bookwyrm.settings import PAGE_LENGTH
from bookwyrm.tasks import app from bookwyrm.tasks import app
from bookwyrm.utils import regex from bookwyrm.utils import regex
@ -53,8 +55,6 @@ def home(request):
@login_required @login_required
def home_tab(request, tab): def home_tab(request, tab):
''' user's homepage with activity feed ''' ''' user's homepage with activity feed '''
# TODO: why on earth would this be where the pagination is set
page_size = 15
try: try:
page = int(request.GET.get('page', 1)) page = int(request.GET.get('page', 1))
except ValueError: except ValueError:
@ -63,20 +63,24 @@ def home_tab(request, tab):
suggested_books = get_suggested_books(request.user) suggested_books = get_suggested_books(request.user)
activities = get_activity_feed(request.user, tab) activities = get_activity_feed(request.user, tab)
paginated = Paginator(activities, PAGE_LENGTH)
activity_page = paginated.page(page)
activity_count = activities.count() prev_page = next_page = None
activities = activities[(page - 1) * page_size:page * page_size] if activity_page.has_next():
next_page = '/%s/?page=%d#feed' % \
next_page = '/?page=%d#feed' % (page + 1) (tab, activity_page.next_page_number())
prev_page = '/?page=%d#feed' % (page - 1) if activity_page.has_previous():
prev_page = '/%s/?page=%d#feed' % \
(tab, activity_page.previous_page_number())
data = { data = {
'title': 'Updates Feed', 'title': 'Updates Feed',
'user': request.user, 'user': request.user,
'suggested_books': suggested_books, 'suggested_books': suggested_books,
'activities': activities, 'activities': activity_page.object_list,
'tab': tab, 'tab': tab,
'next': next_page if activity_count > (page_size * page) else None, 'next': next_page,
'prev': prev_page if page > 1 else None, 'prev': prev_page,
} }
return TemplateResponse(request, 'feed.html', data) return TemplateResponse(request, 'feed.html', data)