Dynamically generate latest blog entries

TODO: this should probably be cached somewhere
This commit is contained in:
str4d
2012-11-09 00:44:57 +00:00
parent e4299837af
commit 618107505a
2 changed files with 33 additions and 25 deletions

View File

@ -166,8 +166,14 @@ def site_show(page='index'):
# bah! those damn users all the time! # bah! those damn users all the time!
abort(404) abort(404)
options = {
'page': page,
}
if (page == 'index'):
options['blog_entries'] = get_blog_entries(8)
# hah! # hah!
return render_template(name, page=page) return render_template(name, **options)
################## ##################
@ -258,12 +264,25 @@ def downloads_redirect(protocol, file, mirror=None):
##################### #####################
# Blog helper methods # Blog helper methods
def get_blog_index(): def get_blog_entries(num=0):
""" """
Returns list of valid slugs sorted by date Returns the latest #num valid entries sorted by date, or all slugs if num=0.
"""
slugs = get_blog_slugs(num)
entries= []
for slug in slugs:
date = get_date_from_slug(slug)
titlepart = slug.rsplit('/', 1)[1]
title = ' '.join(titlepart.split('_'))
entries.append((slug, date, title))
return entries
def get_blog_slugs(num=0):
"""
Returns the latest #num valid slugs sorted by date, or all slugs if num=0.
""" """
# list of slugs # list of slugs
entries=[] slugs=[]
# walk over all directories/files # walk over all directories/files
for v in os.walk(BLOG_DIR): for v in os.walk(BLOG_DIR):
# iterate over all files # iterate over all files
@ -272,10 +291,12 @@ def get_blog_index():
# ignore all non-.rst files # ignore all non-.rst files
if not f.endswith('.rst'): if not f.endswith('.rst'):
continue continue
entries.append(safe_join(slugbase, f[:-4])) slugs.append(safe_join(slugbase, f[:-4]))
entries.sort() slugs.sort()
entries.reverse() slugs.reverse()
return entries if (num > 0):
return slugs[:num]
return slugs
def get_date_from_slug(slug): def get_date_from_slug(slug):
parts = slug.split('/') parts = slug.split('/')
@ -306,13 +327,7 @@ def render_blog_entry(slug):
@app.route('/<string:lang>/blog/') @app.route('/<string:lang>/blog/')
@app.route('/<string:lang>/blog/page/<int:page>') @app.route('/<string:lang>/blog/page/<int:page>')
def blog_index(page=0): def blog_index(page=0):
slugs = get_blog_index() entries = get_blog_entries()
entries= []
for slug in slugs:
date = get_date_from_slug(slug)
titlepart = slug.rsplit('/', 1)[1]
title = ' '.join(titlepart.split('_'))
entries.append((slug, date, title))
return render_template('blog/index.html', entries=entries) return render_template('blog/index.html', entries=entries)

View File

@ -1,12 +1,5 @@
<ul> <ul>
<li>2012-07-30 - <a href="release-0.9.1.html">I2P 0.9.1 Released</a></li> {% for entry in blog_entries -%}
<li>2012-05-02 - <a href="release-0.9.html">I2P 0.9 Released</a></li> <li>{{ entry[1] }} - <a href="{{ url_for('blog_entry', slug=entry[0]) }}">{{ entry[2] }}</a></li>
<li>2012-02-27 - <a href="release-0.8.13.html">I2P 0.8.13 Released</a></li> {%- endfor %}
<li>2012-01-06 - <a href="release-0.8.12.html">I2P 0.8.12 Released</a></li>
<li>2011-03-02 - <a href="release-0.8.4.html">I2P 0.8.4 Released</a></li>
<li>2011-03-01 - <a href='#'>Coding Moratorium & New Site </a></li>
<li>2011-01-24 - <a href="release-0.8.3.html">I2P 0.8.3 Released</a></li>
<li>2011-01-01 - <a href='#'>I2P at HOPE, Pegasus Project</a></li>
<li>2010-12-22 - <a href="release-0.8.2.html">I2P 0.8.2 Released</a></li>
<li>2010-11-15 - <a href="release-0.8.1.html">I2P 0.8.1 Released</a></li>
</ul> </ul>