Files
i2p.www/i2p2www/blog/views.py

55 lines
1.9 KiB
Python
Raw Normal View History

2012-12-19 07:59:22 +00:00
from flask import abort, render_template, request
from werkzeug.contrib.atom import AtomFeed
from i2p2www import BLOG_POSTS_PER_PAGE, cache
from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_date_from_slug, get_metadata_from_meta, render_blog_post
from i2p2www.helpers import Pagination, get_for_page
############
# Blog views
@cache.memoize(600)
def blog_index(page, category=None):
all_posts = get_blog_posts(category=category)
2013-01-09 00:32:32 +00:00
posts = get_for_page(all_posts, page, BLOG_POSTS_PER_PAGE)
if not posts and page != 1:
abort(404)
2013-01-09 00:32:32 +00:00
pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts))
if category:
return render_template('blog/category.html', pagination=pagination, posts=posts, category=category)
else:
return render_template('blog/index.html', pagination=pagination, posts=posts)
2013-02-03 02:17:41 +00:00
@cache.memoize(600)
2013-01-09 00:32:32 +00:00
def blog_post(slug):
# try to render that blog post.. throws 404 if it does not exist
parts = render_blog_post(slug)
if parts:
meta = get_metadata_from_meta(parts['meta'])
meta['date'] = meta['date'] if meta['date'] else get_date_from_slug(slug)
# now just pass to simple template file and we are done
2013-01-09 00:32:32 +00:00
return render_template('blog/post.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug, meta=meta)
else:
abort(404)
def blog_rss():
# TODO: implement
pass
@cache.cached(600)
2013-02-03 02:53:58 +00:00
def blog_atom(category=None):
feed_title = 'I2P Blog'
if category:
feed_title = 'I2P Blog Category: %s' % category
feed = AtomFeed(feed_title, feed_url=request.url, url=request.url_root)
items = get_blog_feed_items(10, category=category)
for item in items:
feed.add(item['title'],
item['content'],
content_type='html',
url=item['url'],
updated=item['updated'])
return feed.get_response()