Blog entries -> Blog posts

This commit is contained in:
str4d
2013-01-09 00:32:32 +00:00
parent 78bba563fe
commit 2acc8bc433
11 changed files with 43 additions and 43 deletions

View File

@ -12,7 +12,7 @@ CURRENT_I2P_VERSION = '0.9.4'
CANONICAL_DOMAIN = 'www.i2p2.de'
BLOG_ENTRIES_PER_PAGE = 20
BLOG_POSTS_PER_PAGE = 20
MEETINGS_PER_PAGE = 20
SUPPORTED_LANGS = [

View File

@ -20,34 +20,34 @@ SUPPORTED_METATAGS = {
# Blog helper methods
def get_blog_feed_items(num=0):
entries = get_blog_entries(num)
posts = get_blog_posts(num)
items = []
for entry in entries:
meta = entry[3]
parts = entry[4]
for post in posts:
meta = post[3]
parts = post[4]
a = {}
a['title'] = parts['title']
a['content'] = meta['excerpt'] if len(meta['excerpt']) > 0 else parts['fragment']
a['url'] = url_for('blog_entry', lang=g.lang, slug=entry[0])
a['url'] = url_for('blog_post', lang=g.lang, slug=post[0])
a['updated'] = datetime.datetime.strptime(meta['date'], '%Y-%m-%d')
items.append(a)
return items
def get_blog_entries(num=0):
def get_blog_posts(num=0):
"""
Returns the latest #num valid entries sorted by date, or all slugs if num=0.
Returns the latest #num valid posts sorted by date, or all slugs if num=0.
"""
slugs = get_blog_slugs(num)
entries= []
posts= []
for slug in slugs:
parts = render_blog_entry(slug)
parts = render_blog_post(slug)
if parts:
meta = get_metadata_from_meta(parts['meta'])
date = get_date_from_slug(slug)
titlepart = slug.rsplit('/', 1)[1]
title = ' '.join(titlepart.split('_'))
entries.append((slug, date, title, meta, parts))
return entries
posts.append((slug, date, title, meta, parts))
return posts
def get_blog_slugs(num=0):
"""
@ -74,9 +74,9 @@ def get_date_from_slug(slug):
parts = slug.split('/')
return "%s-%s-%s" % (parts[0], parts[1], parts[2])
def render_blog_entry(slug):
def render_blog_post(slug):
"""
Render the blog entry
Render the blog post
TODO:
- caching
- move to own file

View File

@ -1,8 +1,8 @@
from flask import abort, render_template, request
from werkzeug.contrib.atom import AtomFeed
from i2p2www import BLOG_ENTRIES_PER_PAGE
from i2p2www.blog.helpers import get_blog_entries, get_blog_feed_items, get_metadata_from_meta, render_blog_entry
from i2p2www import BLOG_POSTS_PER_PAGE
from i2p2www.blog.helpers import get_blog_posts, get_blog_feed_items, get_metadata_from_meta, render_blog_post
from i2p2www.helpers import Pagination, get_for_page
@ -10,21 +10,21 @@ from i2p2www.helpers import Pagination, get_for_page
# Blog views
def blog_index(page):
all_entries = get_blog_entries()
entries = get_for_page(all_entries, page, BLOG_ENTRIES_PER_PAGE)
if not entries and page != 1:
all_posts = get_blog_posts()
posts = get_for_page(all_posts, page, BLOG_POSTS_PER_PAGE)
if not posts and page != 1:
abort(404)
pagination = Pagination(page, BLOG_ENTRIES_PER_PAGE, len(all_entries))
return render_template('blog/index.html', pagination=pagination, entries=entries)
pagination = Pagination(page, BLOG_POSTS_PER_PAGE, len(all_posts))
return render_template('blog/index.html', pagination=pagination, posts=posts)
def blog_entry(slug):
# try to render that blog entry.. throws 404 if it does not exist
parts = render_blog_entry(slug)
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'])
# now just pass to simple template file and we are done
return render_template('blog/entry.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug, meta=meta)
return render_template('blog/post.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug, meta=meta)
else:
abort(404)
@ -33,7 +33,7 @@ def blog_rss():
pass
def blog_atom():
# TODO: Only output beginning of each blog entry
# TODO: Only output beginning of each blog post
feed = AtomFeed('I2P Blog', feed_url=request.url, url=request.url_root)
items = get_blog_feed_items(10)
for item in items:

View File

@ -132,4 +132,4 @@ def legacy_meeting(id):
return redirect(url_for('meetings_show', id=id, lang='en'))
def legacy_status(year, month, day):
return redirect(url_for('blog_entry', lang='en', slug=('%s/%s/%s/status' % (year, month, day))))
return redirect(url_for('blog_post', lang='en', slug=('%s/%s/%s/status' % (year, month, day))))

View File

@ -5,20 +5,20 @@
{%- endblock %}
{% block content %}
<p>Some descriptive text.</p>
<ul id="blog-entries">
{% for entry in entries %}
<ul id="posts">
{% for post in posts %}
<li>
<article>
<header>
<a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a>
<a href="{{ url_for('blog_post', slug=post[0]) }}">{{ post[2] }}</a>
</header>
{%- if entry[3].excerpt %}
<p>{{ entry[3].excerpt }}</p>
{%- if post[3].excerpt %}
<p>{{ post[3].excerpt }}</p>
{%- endif %}
<footer>
<ul>
<li>{{ entry[1] }}</li>
<li>{{ entry[3].author }}</li>
<li>{{ post[1] }}</li>
<li>{{ post[3].author }}</li>
</ul>
</footer>
</article>

View File

@ -1,6 +1,6 @@
<ul>
{% for entry in blog_entries -%}
<li>{{ entry[1] }} - <a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a></li>
{% for post in blog_posts -%}
<li>{{ post[1] }} - <a href="{{ url_for('blog_post', slug=post[0]) }}">{{ post[2] }}</a></li>
{%- endfor %}
<li><a href="{{ url_for('blog_index', lang=g.lang) }}"><em>More blog entries&hellip;</em></a></li>
<li><a href="{{ url_for('blog_index', lang=g.lang) }}"><em>More blog posts&hellip;</em></a></li>
</ul>

View File

@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{{ title }} - Blog{% endblock %}
{% block content %}
<ul id="blog-entry-info">
<ul id="post-info">
<li class="date">{{ meta.date }}</li>
<li class="author">{{ meta.author }}</li>
<li class="category">{{ meta.category }}</li>

View File

@ -155,7 +155,7 @@ may get a "downloaded version is not greater than current version" error,
and should use the manual update method below.
</p><p>
If you are running 0.7.4 or earlier, please see
<a href="{{ url_for('blog_entry', slug='2009/06/29/I2P_0.7.5_released') }}">the 0.7.5 release notes</a>
<a href="{{ url_for('blog_post', slug='2009/06/29/I2P_0.7.5_released') }}">the 0.7.5 release notes</a>
for important information about how to configure your router to automatically
receive the release.
</p><p>

View File

@ -1,6 +1,6 @@
{%- macro change_lang(lang) -%}
{%- if request.endpoint == 'site_show' -%}{{ url_for('site_show', lang=lang, page=page) }}
{%- elif request.endpoint == 'blog_entry' -%}{{ url_for('blog_entry', lang=lang, slug=slug) }}
{%- elif request.endpoint == 'blog_post' -%}{{ url_for('blog_post', lang=lang, slug=slug) }}
{%- elif request.endpoint == 'meetings_show' -%}{{ url_for('meetings_show', lang=lang, id=id) }}
{%- elif request.endpoint == 'downloads_select' -%}{{ url_for('downloads_select', lang=lang, file=file) }}
{%- elif request.endpoint -%}{{ url_for(request.endpoint, lang=lang) }}

View File

@ -40,7 +40,7 @@ url('/<lang:lang>/<path:page>', 'views.site_show')
url('/<lang:lang>/blog/', 'blog.views.blog_index', defaults={'page': 1})
url('/<lang:lang>/blog/page/<int:page>', 'blog.views.blog_index')
url('/<lang:lang>/blog/entry/<path:slug>', 'blog.views.blog_entry')
url('/<lang:lang>/blog/post/<path:slug>', 'blog.views.blog_post')
url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')

View File

@ -2,7 +2,7 @@ from flask import abort, redirect, render_template, safe_join, send_from_directo
import os.path
from i2p2www import STATIC_DIR, TEMPLATE_DIR
from i2p2www.blog.helpers import get_blog_entries
from i2p2www.blog.helpers import get_blog_posts
#######################
@ -31,7 +31,7 @@ def site_show(page):
'page': page,
}
if (page == 'index'):
options['blog_entries'] = get_blog_entries(8)
options['blog_posts'] = get_blog_posts(8)
# hah!
return render_template(name, **options)