Reworked meta dict usage to make blog templates easier to understand
Displayed dates in the blog templates are now all taken from meta['date'], which can be set by the 'date' metatag in the blog post but defaults to the date obtained from the post's slug (i.e. what subfolder the post is in).
This commit is contained in:
@ -11,7 +11,7 @@ from i2p2www import BLOG_DIR
|
||||
SUPPORTED_METATAGS = {
|
||||
'author': u'I2P devs',
|
||||
'category': None,
|
||||
'date': u'1970-01-01',
|
||||
'date': None,
|
||||
'excerpt': u'',
|
||||
}
|
||||
|
||||
@ -20,11 +20,11 @@ SUPPORTED_METATAGS = {
|
||||
# Blog helper methods
|
||||
|
||||
def get_blog_feed_items(num=0):
|
||||
posts = get_blog_posts(num)
|
||||
posts = get_blog_posts(num, True)
|
||||
items = []
|
||||
for post in posts:
|
||||
meta = post[3]
|
||||
parts = post[4]
|
||||
meta = post[1]
|
||||
parts = post[2]
|
||||
a = {}
|
||||
a['title'] = parts['title']
|
||||
a['content'] = meta['excerpt'] if len(meta['excerpt']) > 0 else parts['fragment']
|
||||
@ -33,7 +33,7 @@ def get_blog_feed_items(num=0):
|
||||
items.append(a)
|
||||
return items
|
||||
|
||||
def get_blog_posts(num=0):
|
||||
def get_blog_posts(num=0, return_parts=False):
|
||||
"""
|
||||
Returns the latest #num valid posts sorted by date, or all slugs if num=0.
|
||||
"""
|
||||
@ -43,10 +43,13 @@ def get_blog_posts(num=0):
|
||||
parts = render_blog_post(slug)
|
||||
if parts:
|
||||
meta = get_metadata_from_meta(parts['meta'])
|
||||
date = get_date_from_slug(slug)
|
||||
meta['date'] = meta['date'] if meta['date'] else get_date_from_slug(slug)
|
||||
titlepart = slug.rsplit('/', 1)[1]
|
||||
title = ' '.join(titlepart.split('_'))
|
||||
posts.append((slug, date, title, meta, parts))
|
||||
meta['title'] = ' '.join(titlepart.split('_'))
|
||||
if return_parts:
|
||||
posts.append((slug, meta, parts))
|
||||
else:
|
||||
posts.append((slug, meta))
|
||||
return posts
|
||||
|
||||
def get_blog_slugs(num=0):
|
||||
|
@ -2,7 +2,7 @@ from flask import abort, render_template, request
|
||||
from werkzeug.contrib.atom import AtomFeed
|
||||
|
||||
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.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
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@ def 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
|
||||
return render_template('blog/post.html', parts=parts, title=parts['title'], body=parts['fragment'], slug=slug, meta=meta)
|
||||
else:
|
||||
|
@ -6,19 +6,19 @@
|
||||
{% block content %}
|
||||
<p>Some descriptive text.</p>
|
||||
<ul id="posts">
|
||||
{% for post in posts %}
|
||||
{% for (slug, post) in posts %}
|
||||
<li>
|
||||
<article>
|
||||
<header>
|
||||
<a href="{{ url_for('blog_post', slug=post[0]) }}">{{ post[2] }}</a>
|
||||
<a href="{{ url_for('blog_post', slug=slug) }}">{{ post.title }}</a>
|
||||
</header>
|
||||
{%- if post[3].excerpt %}
|
||||
<p>{{ post[3].excerpt }}</p>
|
||||
{%- if post.excerpt %}
|
||||
<p>{{ post.excerpt }}</p>
|
||||
{%- endif %}
|
||||
<footer>
|
||||
<ul>
|
||||
<li>{{ post[1] }}</li>
|
||||
<li>{{ post[3].author }}</li>
|
||||
<li>{{ post.date }}</li>
|
||||
<li>{{ post.author }}</li>
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<ul>
|
||||
{% for post in blog_posts -%}
|
||||
<li>{{ post[1] }} - <a href="{{ url_for('blog_post', slug=post[0]) }}">{{ post[2] }}</a></li>
|
||||
{% for slug, post in blog_posts -%}
|
||||
<li>{{ post.date }} - <a href="{{ url_for('blog_post', slug=slug) }}">{{ post.title }}</a></li>
|
||||
{%- endfor %}
|
||||
<li><a href="{{ url_for('blog_index', lang=g.lang) }}"><em>More blog posts…</em></a></li>
|
||||
</ul>
|
||||
|
Reference in New Issue
Block a user