From 90d0d721dd612657af2fc28ab29eaad6765f4d9a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 11 Nov 2020 10:43:47 -0800 Subject: [PATCH] Paginates user activity feed --- bookwyrm/templates/user.html | 20 ++++++++++++++++++++ bookwyrm/views.py | 21 ++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/user.html b/bookwyrm/templates/user.html index ba9fcc94..00a1f2f7 100644 --- a/bookwyrm/templates/user.html +++ b/bookwyrm/templates/user.html @@ -54,6 +54,26 @@

No activities yet! {% endif %} + +

{% endblock %} diff --git a/bookwyrm/views.py b/bookwyrm/views.py index 16249592..d20ce732 100644 --- a/bookwyrm/views.py +++ b/bookwyrm/views.py @@ -327,6 +327,11 @@ def user_page(request, username): return JsonResponse(user.to_activity(), encoder=ActivityEncoder) # otherwise we're at a UI view + try: + page = int(request.GET.get('page', 1)) + except ValueError: + page = 1 + shelf_preview = [] # only show other shelves that should be visible @@ -351,13 +356,27 @@ def user_page(request, username): if len(shelf_preview) > 2: break + # user's posts + activities = get_activity_feed(user, 'self') + paginated = Paginator(activities, PAGE_LENGTH) + activity_page = paginated.page(page) + + prev_page = next_page = None + if activity_page.has_next(): + next_page = '/user/%s/?page=%d' % \ + (username, activity_page.next_page_number()) + if activity_page.has_previous(): + prev_page = '/user/%s/?page=%d' % \ + (username, activity_page.previous_page_number()) data = { 'title': user.name, 'user': user, 'is_self': is_self, 'shelves': shelf_preview, 'shelf_count': shelves.count(), - 'activities': get_activity_feed(user, 'self')[:15], + 'activities': activity_page.object_list, + 'next': next_page, + 'prev': prev_page, } return TemplateResponse(request, 'user.html', data)