aboutsummaryrefslogtreecommitdiff
path: root/src/web/views
diff options
context:
space:
mode:
authorCédric Bonhomme <cedric@cedricbonhomme.org>2018-10-29 22:43:02 +0100
committerCédric Bonhomme <cedric@cedricbonhomme.org>2018-10-29 22:43:02 +0100
commit3ac2de8ff898cfe2df74e8f1a74dd7ef9c65fb66 (patch)
tree5429e9ccbb6fb7e4b8ae63df90ce1023198c1362 /src/web/views
parentUpdated Python dependencies. (diff)
downloadnewspipe-3ac2de8ff898cfe2df74e8f1a74dd7ef9c65fb66.tar.gz
newspipe-3ac2de8ff898cfe2df74e8f1a74dd7ef9c65fb66.tar.bz2
newspipe-3ac2de8ff898cfe2df74e8f1a74dd7ef9c65fb66.zip
Improved the pagination and sorting of the list of articles of the public page.
Diffstat (limited to 'src/web/views')
-rw-r--r--src/web/views/feed.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/web/views/feed.py b/src/web/views/feed.py
index 873e1eb6..385d7de2 100644
--- a/src/web/views/feed.py
+++ b/src/web/views/feed.py
@@ -8,6 +8,7 @@ from flask import Blueprint, render_template, flash, \
redirect, request, url_for
from flask_babel import gettext
from flask_login import login_required, current_user
+from flask_paginate import Pagination, get_page_args
import conf
from lib import misc_utils, utils
@@ -40,17 +41,25 @@ def feed_view(feed_id=None, user_id=None):
category = None
if feed.category_id:
category = CategoryController(user_id).get(id=feed.category_id)
- articles = ArticleController(user_id) \
- .read(feed_id=feed_id) \
- .order_by(desc("date")).all()
+ filters = {}
+ filters['feed_id'] = feed_id
+ articles = ArticleController(user_id).read_light(**filters)
+
+ # Server-side pagination
+ page, per_page, offset = get_page_args(per_page_parameter='per_page')
+ pagination = Pagination(page=page, total=articles.count(),
+ css_framework='bootstrap3',
+ search=False, record_name='articles',
+ per_page=per_page)
today = datetime.now()
try:
last_article = articles[0].date
first_article = articles[-1].date
delta = last_article - first_article
- average = round(float(len(articles)) / abs(delta.days), 2)
- except:
+ average = round(float(articles.count()) / abs(delta.days), 2)
+ except Exception as e:
+ print(e)
last_article = datetime.fromtimestamp(0)
first_article = datetime.fromtimestamp(0)
delta = last_article - first_article
@@ -60,6 +69,8 @@ def feed_view(feed_id=None, user_id=None):
return render_template('feed.html',
head_titles=[utils.clear_string(feed.title)],
feed=feed, category=category,
+ articles=articles.offset(offset).limit(per_page),
+ pagination=pagination,
first_post_date=first_article,
end_post_date=last_article,
average=average, delta=delta, elapsed=elapsed)
bgstack15