aboutsummaryrefslogtreecommitdiff
path: root/src/web/views/article.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/views/article.py')
-rw-r--r--src/web/views/article.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/web/views/article.py b/src/web/views/article.py
new file mode 100644
index 00000000..bb914a6b
--- /dev/null
+++ b/src/web/views/article.py
@@ -0,0 +1,40 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -
+
+from flask import Blueprint, g, render_template, redirect
+
+from web import controllers, utils
+from web.lib.view_utils import etag_match
+from web.decorators import pyagg_default_decorator
+
+articles_bp = Blueprint('articles', __name__, url_prefix='/articles')
+article_bp = Blueprint('article', __name__, url_prefix='/article')
+
+
+@article_bp.route('/redirect/<int:article_id>', methods=['GET'])
+@pyagg_default_decorator
+def redirect_to_article(article_id):
+ article = controllers.ArticleController(g.user.id).get(id=article_id)
+ return redirect(article.link)
+
+
+@article_bp.route('/<int:article_id>', methods=['GET'])
+@pyagg_default_decorator
+@etag_match
+def article(article_id=None):
+ """
+ Presents the content of an article.
+ """
+ article = controllers.ArticleController(g.user.id).get(id=article_id)
+ previous_article = article.previous_article()
+ if previous_article is None:
+ previous_article = article.source.articles[0]
+ next_article = article.next_article()
+ if next_article is None:
+ next_article = article.source.articles[-1]
+
+ return render_template('article.html',
+ head_titles=[utils.clear_string(article.title)],
+ article=article,
+ previous_article=previous_article,
+ next_article=next_article)
bgstack15