aboutsummaryrefslogtreecommitdiff
path: root/src/web
diff options
context:
space:
mode:
Diffstat (limited to 'src/web')
-rw-r--r--src/web/templates/feed.html15
-rw-r--r--src/web/templates/profile_public.html2
-rw-r--r--src/web/views/feed.py20
3 files changed, 22 insertions, 15 deletions
diff --git a/src/web/templates/feed.html b/src/web/templates/feed.html
index d914b82b..31db94a5 100644
--- a/src/web/templates/feed.html
+++ b/src/web/templates/feed.html
@@ -55,7 +55,7 @@
</tr>
</thead>
<tbody>
- {% for article in feed.articles %}
+ {% for article in articles %}
<tr>
<td><a href="{{ url_for("article.article_pub", article_id=article.id) }}">{{ article.title }}</a></td>
<td>{{ article.date | datetime }}</td>
@@ -67,13 +67,10 @@
</div>
</div>
+ <div class="row">
+ <div class="col-md-8 offset-md-1">
+ {{ pagination.links }}
+ </div>
+ </div>
</div><!-- /.container -->
-<script>
-$(document).ready(function() {
- $('#table-articles').DataTable( {
- responsive: true,
- order: [[1, "desc"]]
- });
-});
-</script>
{% endblock %}
diff --git a/src/web/templates/profile_public.html b/src/web/templates/profile_public.html
index e30ae300..e933a04b 100644
--- a/src/web/templates/profile_public.html
+++ b/src/web/templates/profile_public.html
@@ -1,7 +1,7 @@
{% extends "layout.html" %}
{% block content %}
<div class="container">
- <h1>{{ user.nickname }}</h1>
+ <h1>{{ user.nickname }} / <a href="{{ url_for('user.user_stream', nickname=user.nickname) }}">stream</a></h1>
<div class="row">
<div class="col-md-12">
<p>
diff --git a/src/web/views/feed.py b/src/web/views/feed.py
index dcc3aa3e..39134213 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, make_response
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,24 @@ 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:
last_article = datetime.fromtimestamp(0)
first_article = datetime.fromtimestamp(0)
delta = last_article - first_article
@@ -60,6 +68,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