2012-12-19 07:59:22 +00:00
|
|
|
from flask import abort, render_template, request
|
2012-12-19 06:53:59 +00:00
|
|
|
from werkzeug.contrib.atom import AtomFeed
|
|
|
|
|
2013-01-09 00:32:32 +00:00
|
|
|
from i2p2www import BLOG_POSTS_PER_PAGE
|
2013-01-16 01:41:24 +00:00
|
|
|
from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_date_from_slug, get_metadata_from_meta, render_blog_post
|
2012-12-19 06:53:59 +00:00
|
|
|
from i2p2www.helpers import Pagination, get_for_page
|
|
|
|
|
|
|
|
|
|
|
|
############
|
|
|
|
# Blog views
|
|
|
|
|
|
|
|
def blog_index(page):
|
2013-01-09 00:32:32 +00:00
|
|
|
all_posts = get_blog_posts()
|
|
|
|
posts = get_for_page(all_posts, page, BLOG_POSTS_PER_PAGE)
|
|
|
|
if not posts and page != 1:
|
2012-12-19 06:53:59 +00:00
|
|
|
abort(404)
|
2013-01-09 00:32:32 +00:00
|
|
|
pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts))
|
|
|
|
return render_template('blog/index.html', pagination=pagination, posts=posts)
|
2012-12-19 06:53:59 +00:00
|
|
|
|
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)
|
2012-12-19 06:53:59 +00:00
|
|
|
|
|
|
|
if parts:
|
2013-01-08 01:33:22 +00:00
|
|
|
meta = get_metadata_from_meta(parts['meta'])
|
2013-01-16 01:41:24 +00:00
|
|
|
meta['date'] = meta['date'] if meta['date'] else get_date_from_slug(slug)
|
2012-12-19 06:53:59 +00:00
|
|
|
# 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)
|
2012-12-19 06:53:59 +00:00
|
|
|
else:
|
|
|
|
abort(404)
|
|
|
|
|
|
|
|
def blog_rss():
|
|
|
|
# TODO: implement
|
|
|
|
pass
|
|
|
|
|
|
|
|
def blog_atom():
|
2013-01-09 00:32:32 +00:00
|
|
|
# TODO: Only output beginning of each blog post
|
2012-12-19 06:53:59 +00:00
|
|
|
feed = AtomFeed('I2P Blog', feed_url=request.url, url=request.url_root)
|
|
|
|
items = get_blog_feed_items(10)
|
|
|
|
for item in items:
|
|
|
|
feed.add(item['title'],
|
|
|
|
item['content'],
|
|
|
|
content_type='html',
|
|
|
|
url=item['url'],
|
|
|
|
updated=item['updated'])
|
|
|
|
return feed.get_response()
|