Merge remote-tracking branch 'origin/main'

This commit is contained in:
rimu 2024-12-16 11:30:42 +13:00
commit 40777cd390
2 changed files with 36 additions and 6 deletions

View file

@ -116,9 +116,39 @@ def home_page(sort, view_filter):
posts = posts.order_by(desc(Post.last_active))
# Pagination
posts = posts.paginate(page=page, per_page=100 if current_user.is_authenticated and not low_bandwidth else 50, error_out=False)
next_url = url_for('main.index', page=posts.next_num, sort=sort, view_filter=view_filter) if posts.has_next else None
prev_url = url_for('main.index', page=posts.prev_num, sort=sort, view_filter=view_filter) if posts.has_prev and page != 1 else None
if view_filter == 'subscribed' and current_user.is_authenticated and sort == 'new':
# use python list instead of DB query
posts = posts.all()
# exclude extra cross-posts from feed
already_seen = []
limit = 100 if not low_bandwidth else 50
#i = -1 # option 1: don't exclude cross-posts
#i = min(limit - 1, len(posts) - 1) # option 2: exclude cross-posts from the first page only
i = min((limit * 10) - 1, len(posts) - 1) # option 3: exclude cross-posts across a 'magic number' of pages
#i = len(posts) - 1 # option 4: exclude all cross-posts ever
while i >= 0:
if not posts[i].cross_posts:
i -= 1
continue
if posts[i].id in already_seen:
posts.pop(i)
else:
already_seen.extend(posts[i].cross_posts)
i -= 1
# paginate manually (can't use paginate())
start = (page - 1) * limit
end = start + limit
posts = posts[start:end]
next_page = page + 1 if len(posts) == limit else None
previous_page = page - 1 if page != 1 else None
next_url = url_for('main.index', page=next_page, sort=sort, view_filter=view_filter) if next_page else None
prev_url = url_for('main.index', page=previous_page, sort=sort, view_filter=view_filter) if previous_page else None
else:
posts = posts.paginate(page=page, per_page=100 if current_user.is_authenticated and not low_bandwidth else 50, error_out=False)
next_url = url_for('main.index', page=posts.next_num, sort=sort, view_filter=view_filter) if posts.has_next else None
prev_url = url_for('main.index', page=posts.prev_num, sort=sort, view_filter=view_filter) if posts.has_prev and page != 1 else None
# Active Communities
active_communities = Community.query.filter_by(banned=False)

View file

@ -15,12 +15,12 @@
{% include "_home_nav.html" %}
{% include "_view_filter_nav.html" %}
<div class="post_list h-feed">
{% for post in posts.items -%}
{% for post in posts %}
{% include 'post/_post_teaser.html' %}
{% else -%}
{% else %}
<p>{{ _('No posts yet. Join some communities to see more.') }}</p>
<p><a class="btn btn-primary" href="/communities">{{ _('More communities') }}</a></p>
{% endfor -%}
{% endfor %}
</div>
<nav aria-label="Pagination" class="mt-4" role="navigation">