Blog entries -> Blog posts
This commit is contained in:
@ -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 = [
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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))))
|
||||
|
@ -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>
|
||||
|
@ -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…</em></a></li>
|
||||
<li><a href="{{ url_for('blog_index', lang=g.lang) }}"><em>More blog posts…</em></a></li>
|
||||
</ul>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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) }}
|
||||
|
@ -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')
|
||||
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user